{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Chapter 7 Code - Python 3 version\n",
    "\n",
    "### abaloneGBM.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE\n",
      "4.260447821913919\n",
      "1775\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XdclWX/wPHPddh7CwoqCC62iJoz\nMc3MyrJh2bTMX9mynoZPtvd42tOy0socDbUyNUeaW1FRceJARJAlstfhXL8/bjiCrKMCh3G9X6/z\nOufe34N1f899TSGlRFEURWm/dOYOQFEURTEvlQgURVHaOZUIFEVR2jmVCBRFUdo5lQgURVHaOZUI\nFEVR2jmVCBRFUdo5lQgURVHaOZUIFEVR2jlLcwdgCk9PT+nv72/uMBRFUVqVHTt2ZEopvRrar1Uk\nAn9/f2JjY80dhqIoSqsihDhhyn6qaEhRFKWdU4lAURSlnVOJQFEUpZ1rFXUEiqJcmrKyMpKTkyku\nLjZ3KEoTsLW1xc/PDysrq4s6XiUCRWkHkpOTcXJywt/fHyGEucNRGpGUkqysLJKTkwkICLioc6ii\nIUVpB4qLi/Hw8FBJoA0SQuDh4XFJT3sqEShKO6GSQNt1qf+2bT4R/L47hdziMnOHoSiK0mK16URw\nIquAR+ft4p3lB80diqK0a1lZWURGRhIZGYmPjw++vr7G5dLSUpPOMWnSJA4dOlTvPp999hlz585t\njJBZsmQJkZGRREREEBwczKxZs+rdf82aNWzZsqXWbbNmzUIIwbp164zrfv75Z4QQLF68uN7rPffc\nc9X+XpGRkeTl5TXKd6zUpiuLfVxs+fXBgXR2tzd3KIrSrnl4eBAXFwfASy+9hKOjI08++WS1faSU\nSCnR6Wr/ffrdd981eJ2HHnro0oMFSkpKePDBB4mNjaVTp06UlJRw4kT9nXTXrFmDp6cnl112Wa3b\nw8LCmDdvHpdffjkA8+fPJyIiwqTrPfXUU0ybNq1Rvltt2vQTgY2lBX27utPBydbcoSiKUosjR44Q\nGhrKAw88QFRUFKmpqUyZMoXo6GhCQkJ45ZVXjPsOGTKEuLg49Ho9rq6uTJ8+nYiICAYOHEh6ejqg\n/Xr+8MMPjftPnz6d/v3707NnTzZt2gRAQUEBN954IxEREdx2221ER0cbk1SlnJwcpJS4u7sDYGNj\nQ48ePQBIS0tj/PjxREdH079/f7Zs2cLRo0eZNWsW7777LpGRkcZrVTV8+HA2bdqEXq8nNzeXpKQk\nQkNDG7xec2jTiSCnsAz/6Uv57J8j5g5FUVqUCTM383PsSQDKyg1MmLmZRbuSASgqLWfCzM38sTsF\ngNziMibM3Mzy+FQAzhSUMmHmZlbtTwMgPe/S+ibs37+f++67j127duHr68tbb71FbGwsu3fvZuXK\nlezfv7/GMTk5OVx++eXs3r2bgQMH8u2339Z6bikl27Zt49133zUmlU8++QQfHx92797N9OnT2bVr\nV43jOnTowOjRo+natSsTJ05k3rx5GAwGAB599FGefvppYmNjWbhwIZMnTyYwMJDJkyfz1FNPERcX\nx6BBg2qcU6fTMXz4cFatWsWiRYu4/vrrTboeYEwwkZGRjBw58sL+wCZo04mg8j/QHSeyzRyJoih1\nCQwMpF+/fsblefPmERUVRVRUFAcOHKg1EdjZ2TFmzBgA+vbtS2JiYq3nHj9+fI19NmzYwK233gpA\nREQEISEhtR47e/ZsVq5cSXR0NG+99RZTpkwBYNWqVTzwwANERkZy/fXXk52dTVFRkUnf9dZbb2X+\n/PnMnz/fGEND1wOMCSYuLo5Vq1aZdK0L0abrCDq72/P7w4Pp7KbqCBSlqgX/N9D42cpCV23Zztqi\n2rKzrVW1ZXcH62rLl1r06uDgYPyckJDARx99xLZt23B1deWOO+6otX28tbW18bOFhQV6vb7Wc9vY\n2NTYR0ppcmzh4eGEh4czceJEevfuzaxZs4xPGVVjMNXAgQN54IEHcHJyIjAw0KTrNYc2/UQQ/MJy\nrvt0Iw42bTrfKUqbkZubi5OTE87OzqSmprJixYpGv8aQIUNYuHAhAHv37q31iSM3N5d///3XuBwX\nF0fXrl0BGDlyJJ999lm1bQBOTk4NtuYRQvDmm2/yxhtvmHy95tCmE8F1EZ0AeH1pzX9oRVFanqio\nKIKDgwkNDeX+++9n8ODBjX6NRx55hFOnThEeHs57771HaGgoLi4u1faRUvLmm2/Ss2dPIiMjee21\n14z1EJ999hkbN24kPDyc4OBgvv76awDGjRvHwoUL6dOnT62VxZXGjh1rbDlkyvWgeh1BZGQkJ0+e\nbKw/BwDiQh6TzCU6OlpezMQ0u5KyueHzTYwK9ubru6KbIDJFaR0OHDhA7969zR1Gi6DX69Hr9dja\n2pKQkMCVV15JQkIClpatu+Sgtn9jIcQOKWWDN7/W/c0b0MPbib8eHUpndztzh6IoSguRn5/PFVdc\ngV6vR0rJzJkzW30SuFRt+tuPeG8tabkljO/jy7WRnYjp2cHcISmKYmaurq7s2LHD3GG0KG26jmDS\nYG1I1t92neLvfWlmjkZRFKVlatNPBA9cHsjR9Hwy80uY0K+zucNRFEVpkdr0E0GJvpwALwfSckso\nLKm9nbGiKEp716YTwX8W7uad5YfYn5rLtAVxDR+gKIrSDrXpRFDZjwAguJOzGSNRlPatMYahBvj2\n2285ffp0rds2btzIgAEDiIyMpHfv3rz66qv1nmvnzp0sX7681m2rVq1CCMGcOXOM67Zv344Qwjio\nXV3XmzVrFl5eXtXa/Tc0fLa5tek6gisL/+QBi+18WX4dz1zVy9zhKEq7Zcow1Kb49ttviYqKwsfH\np8a2u+++m8WLFxMaGkp5eXmDN9+dO3cSHx/PVVddVev2sLAw5s+fz9133w1UHza6oevdfvvtxoTR\nGjTZE4EQ4lshRLoQIr7KOnchxEohRELFu1tTXR9Af3Qd99itB+B07qWNkKgoStOYM2cO/fv3JzIy\nkqlTp2IwGNDr9dx5552EhYURGhrKxx9/zIIFC4iLi2PChAm1PklkZGQYE4SFhQXBwcGA1m/gnnvu\noX///vTp04c//viDoqIiXnnlFebOnUtkZCS//PJLjbi6detGbm4umZmZSClZuXIlo0ePbvB6rVFT\nPhHMBj4Fvq+ybjqwWkr5lhBiesXyM00VwLJUJ8aUpWJNGZO+207iW2Ob6lKK0nosmw6n9zbuOX3C\nYMxbF3xYfHw8ixYtYtOmTVhaWjJlyhTmz59PYGAgmZmZ7N2rxXn27FlcXV355JNP+PTTT4mMjKxx\nrmnTptG9e3diYmIYM2YMd911FzY2NrzyyitcddVVzJ49m+zsbAYMGMCePXt44YUXiI+Pr/eX+403\n3sgvv/xC7969GTBgAFZWVg1eD2Du3LmsXbvWuO/FDlLXXJrsiUBK+S9w5rzV44DKQrc5wPU0oa49\nI7EUBroIrQ/B2ULTyyIVRWl6q1atYvv27URHRxMZGcm6des4evQoQUFBHDp0iMcee4wVK1bUGAuo\nNi+//DLbt29n5MiRfP/994wdq/3w+/vvv3n99deJjIwkJiaG4uJikpKSTIpvwoQJLFy4kHnz5nHb\nbbeZdD3QioYqh42Oi4tr0UkAmr+OwFtKmQogpUwVQjRpV9/wyH6wDQJFKkekH0Vl5bg25QUVpTW4\niF/uTUVKyb333ltrxe6ePXtYtmwZH3/8Mb/++itfffVVg+cLCgoiKCiI+++/Hw8PD+PMX4sXL64x\n7HPV0T7r4uvri5SSdevW8fnnn7NmzZoGr9catdhWQ0KIKUKIWCFEbEZGxsWdxKM7AIFCm2nJ2daq\nvr0VRWlmI0eOZOHChWRmZgJa66KkpCQyMjKQUnLzzTfz8ssvs3PnTqD+oZ6XLl1qnGvg8OHD2NjY\n4OTkxOjRo/n444+N+1XOSGbKsNEAr776Km+//XaNuZTrul5r1NxPBGlCiI4VTwMdgfS6dpRSfgV8\nBdrooxd1NRtHUqU7gboUKEfNS6AoLUxYWBgvvvgiI0eOxGAwYGVlxZdffomFhQX33XcfUkqEELz9\n9tsATJo0icmTJ2NnZ1ej3H327Nk8/vjj2NvbY2VlxU8//YROp+PFF19k2rRphIWFYTAYCAoKYsmS\nJYwYMYJ3332XPn36MGPGDG666aZaYxwyZEit6+u6HtSsI5g5cyYDBgxopL9a42vSYaiFEP7An1LK\n0Irld4GsKpXF7lLKpxs6z8UOQw2w4flBOIpiri99lY3TR+DrqkYiVdofNQx123cpw1A3ZfPRecBm\noKcQIlkIcR/wFjBKCJEAjKpYblK2HXvRTaQA8oKmqFMURWkvmqysREp5Wx2brmiqa9Ymuu9lsOxX\nvDiLj/Olza2qKIrSFrXYyuJG46lVGAfpUli6N9XMwSiK+agn4rbrUv9t200i6CZSeWx+nPqfQWmX\nbG1tycrKUv/9t0FSSrKysrC1vfgSj7bfjMapEyXC1tiE9JpPNvDjfQNwc2jZHTwUpTH5+fmRnJzM\nRTfFVlo0W1tb/Pz8Lvr4tp8IdDpSrToTqE/h04l9ePinXZw6W6QSgdKuWFlZERAQYO4wlBaq7ScC\nINuuK4ElcQz5aRfPXxNMFw97c4ekKIrSYrT9OgKgV1g0fiITW0rYdCSTswVl5g5JURSlxWgXiWBX\noSegVRivPphOSk6RmSNSFEVpOdpFIvjzlCOgJQKAoA6O5gxHURSlRWkXicDauzsGKQjSnWJwkAcO\n1paqGZ2iKEqFdpEIpl/bh+PSh17iJBuPZNH7heUknSk0d1iKoigtQrtIBLZWFngG9SVUl2hcl1uk\nN19AiqIoLUi7SAQALgFR+IkMnCkA4HhWgZkjUhRFaRnaTSJ4Z7c2l+jlLtq0ldYWwpzhKIqitBjt\nJhH8nOwGgGf+IQD2nmqdU8opiqI0tnaTCOY8ei2Z0oVgcQKAw2n5Zo5IURSlZWg3iSC4kzP7DF0J\n0WmJ4MYoXzNHpCiK0jK0m0QAEBQ+iB66U1ih54Efd5o7HEVRlBahXSUCi07hWKKnu0g2dyiKoigt\nRrtKBG/GWQEQrDvBwG4eZo5GURSlZWhXieCPk3YUShuCxQksVfNRRVEUoJ0lgp8fHEK6fRAhukTW\nJ2RiMEjWHkrncFqeuUNTFEUxm3aVCGytdKzP60hvcQKQHMvM557vtnPrV1vMHZqiKIrZtIsZyioF\neDqwzq03znmr8BMZnDpbzJ+PDMHJtl39GRRFUappV08E9taWTJ1wAwAh4gSr9qcR6utCVw8HM0em\nKIpiPvUmAiGEhRBiVXMF0yy8gymXgmDdCTYcycR/+lImz4k1d1SKoihmU28ikFKWA4VCCJdmiqfp\nWdmRbOFHiDjOqbPalJWrDqSZOShFURTzMaVwvBjYK4RYCRjHbpZSPtpkUTUxy859iUhcQ2lJOeMi\nfXnyyp7mDklRFMVsTEkESytebYZT90E4n1iMn8hgxtiRdHCyNXdIiqIoZtNgIpBSzhFCWAM9KlYd\nklKWNW1YTcs58DJYBVHiCP1fX01MTy++m9Tf3GEpiqKYRYOthoQQw4EE4DPgc+CwEGJYE8fVtDqE\noNfZ0keXAMA/hzLMHJCiKIr5mFI09B5wpZTyEIAQogcwD+jblIE1pZxSyUG9P5G6o0wb2Z2bozub\nOyRFURSzMaUfgVVlEgCQUh4GrJoupKZnY6ljl6E7wSKRjOxcpnwfy/L4VNJyi80dmqIoSrMzJRHE\nCiG+EUIMr3h9Dexo6sCakq2VBZ69BmMj9OzfuYF9Kbk88ONOPlmTYO7QFEVRmp0pieBBYB/wKPAY\nsB94oCmDag4ePQcC0Ed3xLiuVG8wVziKoihmU28dgRDCAvhGSnkH8H7zhNQ8Cmw6kCw9ubNzOlNu\nu4LM/BI6ONuYOyxFUZRmZ0rPYq+K5qNtSrivK3GGQKxSdzDx6y3sTj5LTmEZy+NPk56n6goURWk/\nTGk1lAhsFEL8TvWexRf9hCCEeByYDEhgLzBJStmsd9+/4lPJMARxjcVW8jKTmbGogJBOzuxLyWXm\nnX0ZHeLTnOEoiqKYjSl1BCnAnxX7OlV5XRQhhC9afUO0lDIUsABuvdjzXaye3k7sMnQHIKqiP8G+\nlFwAnG1bdaMoRVGUC2JKHYGjlPKpJriunRCiDLBHSzbNKi23mL2yG8XYMEi3jxUGrWfxqGBvevlc\ndJ5TFEVpdUypI4hqzAtKKU8B/wOSgFQgR0r5d2NewxRjwjpShiVbynsxWLfPuH7l/jQKy8qbOxxF\nURSzMaVoKE4I8bsQ4k4hxPjK18VeUAjhBowDAoBOgIMQ4o5a9psihIgVQsRmZDT+EBAudlrxzwZD\nKEG6FLw5QzdPbYKa2MQzjX49RVGUlsqUROAOZAEjgGsrXtdcwjVHAsellBkVg9f9Bgw6fycp5VdS\nymgpZbSXl9clXK5u790cwSZDCACDdfGE+mrTLvTt6tYk11MURWmJTBl9dFIjXzMJuEwIYQ8UAVcA\nZpki7GxRGQdkF7KkE4Mt9vGf3VpVhbezGpZaUZT2o84nAiHEwiqf3z5v20WX6UsptwK/ADvRmo7q\ngK8u9nyX4tU/9yPRsdkQwmBdPFprVkjOLjJHOIqiKGZRX9FQ9yqfR5237ZLKaqSUL0ope0kpQ6WU\nd0opSy7lfBdryrBuAGw0hOAjsnkgRKsk3nosyxzhKIqimEV9RUPyIre1Gg/FBCGAhIMFkPsNBQfX\nMLDbbVwT0cncoSmKojSb+hKBvRCiD9pTg13FZ1HxsmuO4JrakfR8ft15Ck8Hb04avBis20e5lwN2\nVhbmDk1RFKXZ1JcIUjk30Nxpqg86d7rJImpG7g7WhHRyZt3hDHL9BzEwdSVTtyaSU1TGZxMbtfuE\noihKi1VnIpBSxjRnIOYgpWTd4QxsLHXY9hiBy+kl9LdJYlj3CHOHpiiK0mxM6UfQZrnYWfFwTBCL\npg4mxb0fAH30e5i7NcnMkSmKojQfU0YfbbPSckv4fnMifbu68UNcIZ6GzkzwOErfEd0bPFZRFKWt\naNdPBG4OVoyP8qOjqy0vXRuCU++RdC3ci7+LjoWxJylWYw4pitIO1PlEIISot7ZUSrmz8cNpXh1d\n7HjpupBzK/qOgUPfsemfP3khvgOjentjq1oQKYrSxtVXNPRexbstEA3sRms6Gg5sBYY0bWjN64ct\nJ/hwWSn/YoPlwd8Z2O0ZJHAgNZc1B9N5KCbI3CEqiqI0iTqLhqSUMRUth04AURUDwPUF+gBH6jqu\ntbIQgqwSHUmelzPaYjvbjqVTUKJnxqK9vLviEAZDm+hDpyiKUoMplcW9pJR7KxeklPFCiMgmjMks\nJg7owsQBXSjeU4btb38zzOognd2v47epg80dmqIoSpMypbL4gBBilhBiuBDiciHE18CBpg7MbIJG\nki9tGSU389j8Xcxaf4wSvao0VhSl7TIlEUwC9gGPAdOA/RXr2qTThYLVhiiustjGn3EneW3pAXo+\nt1y1IFIUpc1qMBFIKYuBL4HpUsobpJQfVKxrk9LzSvirfADuIp+Buv3G9SV6gxmjUhRFaToNJgIh\nxHVAHLC8YjlSCPF7UwdmLuF+Lqw1RJAvbZlgH8vSR4eQ+NZY49SWiqIobY0pRUMvAv2BswBSyjjA\nvwljMqui0nJKsGa1IYrBZZu58dN1qsWQoihtmimJQC+lzGnySFqI9Dxtjpwl5YNwF/kMZRfdnv2L\n7IJSM0emKIrSNExJBPFCiImAhRCiuxDiE2BTE8dlNrJizp1/DeFkSBdusvgXgGLVckhRlDbKlETw\nCBAClAA/ATlorYfapEAvRwD0WLLZ4QpG6HYxKdKBji5tYi4eRVGUGupNBEIIC+BlKeUMKWW/itdz\nbbnVkJWFjl8fHIinow2fZg/ASpQz3nIzaw+lM2PRXrLyzTK9sqIoSpOpNxFIKcuBvs0US4vhYGNJ\nZn4Jh2Vndhu6YbFnHvd8t50lcSnkl+jNHZ6iKEqjMqVoaJcQ4nchxJ1CiPGVryaPzIwSMwuNn38p\nH0aw7gTh4ij5JXq8nGzMGJmiKErjMyURuANZwAjg2orXNU0ZlLl19bAHYHSIN4vLh1As7Hij00YA\ngl9YwRML48wZnqIoSqNqcNA5KWWbHU6iLkEdHAnwdGDFvjTAnpSAGwlOXMCozney8qTgt52neP+W\nNjfunqIo7ZQpPYtthRAPCSE+F0J8W/lqjuDM5URWAcczC4zL9x3og85QRkjqrwC8Mi6krkMVRVFa\nHVOKhn4AfIDRwDrAD8hryqDMLT23esug47Ija8ojud1iFdaUMSa0o5kiUxRFaXymJIIgKeXzQIGU\ncg4wFghr2rDM67JuHrx/SwT/PDkcgHGRnTjV8268RC7jLDbS7/VV5g1QURSlEZmSCMoq3s8KIUIB\nF9rwWEMAOp1gfJQf3s423DPIn5G9vekcPZYDhi7cb7GUSD9nc4eoKIrSaEyZoewrIYQb8DzwO+AI\nvNCkUbUQKWeLmL0pkdmbEgEYp7uGj6w/5/Guicze6Mc9gwPMG6CiKEojMGU+gllSymwp5TopZTcp\nZQcp5ZfNEZy5eTpW7zOw1HAZydITu+2f8NIf+ykrV3MUKIrS+jX4RCCEqPXXv5TylcYPp2WpnIzm\n9RtCiU3MZtGuU3yjH8OLVj8QJQ5jqbvazBEqiqJcOlPqCAqqvMqBMbTxOoJKDjaWPDe2N/4eDkwd\nHsgP9/VnQXkMuTgyM3AjZeVqngJFUVo/IeWF3cyEEDbA71LK0U0TUk3R0dEyNja2uS5Xw4SZm9l6\n/Ixx+T3PP7khbx6jSt9hwpgrmDIs0GyxKYqi1EUIsUNKGd3QfqY8EZzPHuh2Ece1WuF+LtWW38gc\nSimWTLFYyq87TrGtSpJQFEVpbUzpWbxXCLGn4rUPOAR81PShtRwzxgYzsJsHNpbanysLFxaUD2e8\nxXoK0o9yy8zNZo5QURTl4pnSfLTqAHN6IE1K2a7GYs7KL2HG2N509bDnneWHOJqRz+dHx3GrxVoe\nsVjMwQFvmDtERVGUi2ZKIjh/OAlnIYRxQUp5weUiQghXYBYQCkjgXilli/1Z/drSAyzadQpXeyt8\nnG25d0gATx/N4vvyUdxnsYykLpnmDlFRFOWiNVhZLIRIBDoD2YAAXIGkis1SSnnB9QVCiDnAeinl\nLCGENWAvpTxb1/7mrixOzSliRfxpXvpjf7X1jhSy2uZJUqUHXo+vx9fNwUwRKoqi1NSYlcXLgWul\nlJ5SSg+0oqLfpJQBF5kEnIFhwDcAUsrS+pJAS9DRxY57BgewfcZIJkR3Nq7Px553ym4lUneUbz99\ng3GfbuChn3aqjmaKorQqpiSCflLKvyoXpJTLgMsv4ZrdgAzgOyHELiHELCFEq/gp7eVkw1s3hrHz\n+VE8HBOEk40lvxmGsN3Qg0f033Ey+SRL96SSlttmp3RWFKUNMiURZAohnhNC+AshugohZqDNWHax\nLIEo4AspZR+0jmrTz99JCDFFCBErhIjNyMi4hMs1LiEE7g7WPD6qB51c7ZDo+G/ZZBwo5seuS5lx\ndW9c7a3NHaaiKIrJTEkEtwFewCJgMdChYt3FSgaSpZRbK5Z/QUsM1Ugpv5JSRkspo728vC7hco1P\nSsmTP+/mUJpWj35E+rHBawLBaX+Qtnc1ljrRwBkURVFaDlMGnTsjpXys4tf7CGDaxbQUqnK+08BJ\nIUTPilVXAPvrOaTFKSwtZ9GuU9XWTU0eyQlDB+5Ke5uS/BwzRaYoinLh6kwEQogXhBC9Kj7bCCHW\nAEeANCHEyEu87iPAXCHEHiASaFUN8a0tdTwxqge9fJyM64qw5W27x/ATmZQue5ZDp/M4lpFvxigV\nRVFMU18/ggnAqxWf70ZLGh2AHsAc4KKn6ZJSxgENNmlqqawsdDx6RXc8HW1YdSCNNQfTAbhs+DXE\nH0wg/PBsnozvgm3vK5l5Z6v9moqitBP1FQ2VynOdDEYD86SU5VLKA5jWEa3Ne3bRXmMSuH1AF15Y\nso+bDsWQYPDldatvCO9gif/0pTy/ON7MkSqKotStvkRQIoQIFUJ4ATHA31W22TdtWK1DqO+5KSvn\nbtX62JVixccOj9CJLK489jYhHZ0I9GoVrWMVRWmn6ksEj6G16DkIfCClPA4ghLga2NUMsbV4I3p2\nYPqYXjXW/5HdhQ/0N9I97S+WhvxTY0rLHSeyCXr2LzLySporVEVRlDrVWcRT0byzxl2uonPZXzWP\naH983ezo7u1ET28ngrwdKS+XLN93GoBPym8gwqWQkRve57R0w2fUo8bjTucUozdIsgtL8XKyqev0\niqIozUKV9V+CF3/fR3GZNpxE/wB3fthyospWwZQzE/nSKo2RG14AX38Ivg4pJTG9vFj/dAzezrZm\niVtRFKWqC56hzBzMPehcXdJzi/l4TQI/bkmqcx9bSvjH6306FiWQd8svhH2bC0CEnwtf3x2NwQAS\nSUcXu+YKW1GUdqIpZyhTKnRwtuW168M48vqYOvcpxobPfF7jWKkr5XMnECi0jmi7k3PIyi9l2oJd\nPDY/rrlCVhRFqcGkRCCEGCSEmCiEuKvy1dSBtSYWOsGvDw6ib1e3GttG9OrA6qRy7i57hjIsmGP9\nNnf01krkSvQGHooJ4uGYoOYOWVEUxciUqSp/AP4HDAH6VbxUL6kqhBBsSMhkx4lsrujVodq2NQfT\nSc0p5qenbqXw5vm4UMADx6Yy1reIkE7OrD2UoeY8VhTFrEypLI4GgmVrqEwwow9WHQYgqqsbnd3t\nmb0p0bjt4Zgg8kv0/JPpzdLS5/jB+k1ezPwPxad6cPB0IbaWFmaKWlEUxbREEA/4AKlNHEub8O6K\nQzXWffrPET7950jFUgC3lL7AXOs3sJ97LYGur7Gn5ILn91EURWk0ptQReAL7hRArhBC/V76aOrDW\n5q9Hh3JLtB+ONtVza39/9xr7HpF+3FT6ImWWjrxwZjqvh6ocqyiK+ZjyRPBSUwfRFlhbChbGJvPe\nzRGsT8jA1d6a2ZsS2Zaolf8vfXQIUsI1n2wAwN23Bxa3Lyd95vX0/mcyGw9vZvB974JOy80v/7GP\n/Sm5LPi/gWb7ToqitA8NJgLevWiuAAAgAElEQVQp5brmCKS183OzZ9HUQfh7OHBjXz92JmVzOC2P\nTUe1ydxK9QZu+HyTcf/dyTnM3a9nid3b3F7wETedmgU/JcL4r8HencNpeRxIzTXTt1EUpT1psEOZ\nEOIy4BOgN2ANWAAFUkrneg9sRC21Q1l9Br+1hlNnixrcz9XeCh8nG+ZHH8Jh9bMU23pie9v3WHXt\nb9znSHoe986OZdHUQXg4qiEpFEUxTWN2KPsUbWrKBMAOmFyxTqlHZRJwsbOqcx8vJxs+urUPB9Py\niVzqy40lL5BTVIbl7NGw+hUoLwNg54mzJJ0p5Ei6muhGUZTGZ1KHMinlEcCiYj6C74DhTRpVG7B8\n2lA8Ha3JKdJu5o+P7EFUF1fj9jGhPix/bCh3f7vNuO64dU92jPkTGX4brH+PhJcjWDDvO27p15nE\nt8YyoJtHs38PRVHaPlOKhv4FRgKzgNNozUjvkVJGNH14mtZYNASQV1zGp2uOENzJmXWHMvjtvHmO\nzzc2vCNL96TywLBuHNnwMzMsfyRAl4a+2xVkDX4BD/9wLC3UqCCKopjG1KIhUxJBVyANrX7gccAF\n+LziKaFZtNZEAJBfoif0xRUXfNzcyQNIO5NLcPIC/Pd9iqW+kNSgW+l8wyvg6NUEkSqK0tY0Wh2B\nlPIEIICOUsqXpZRPNGcSaO22Hc8yfp46PJBnr+7F5T3O3cgH1lLcc21EJ8L9XHjitwNctS2cf65c\nwY/lI/E9tgA+joQ1r0FBZrPEryhK22fKWEPXAnHA8orlSNWhzHTl2nQFzLormqev6sXgIE/WHc7g\njsu68OUdUWw+llXjmPziMsJeOjczaExUb17S38P8fr9A0Ej493/wQSj8MQ3SDzbXV1EUpY0ytUNZ\nf2AtgJQyTgjh32QRtTExPb3Y9/JobK208YSKSssB+HFLUo15DEb06sCag+n8cyij2vr8Ej0A8SVe\ncMscyDgMmz6CuJ9gx3dkdhiI7P9/eEVdBzo1bpGiKBfGlJpHvZQyp8kjaaPyS/SEvLiCwGe12T2j\n/d15anTPavvohPa+5mB6tfUf3RrJd/f045PVCQCk55ZgMEgKnLvBuM/gif2k9XuG0rRDeP15D3wS\nBVu+gEI1mqmiKKYzJRHECyEmAhZCiO5CiE+ATQ0dpGj2nqqZQ3efPGv83N/fHcN59fW+rnasfXI4\nj82PY9Ls7QR1cAQgppcXby47QL/XV2k7OniSFjGVYSUfsjHqf+DoA8unw7uB8N3VsPFjyFTVOYqi\n1M+UVkP2wAzgSrRK4xXAq1LK4qYPT9OaWw3pyw18tf4YkwYFYGetFdusOZhGXrGecZG+vL38IF+s\nPVrvOTwcrMkqKAXgsm7ubDmm/eL/85Eh9PB24nROMR6O1jjYWEJKHBxcCoeWQdpe7QSOPhAwDHpd\nDd1iwM61rkspitKGNFrz0ZagNSeC2ry74iB/7T3NzDv7si8lh8cX7MbN3oo7B/rzcUUx0IVaMW0Y\nPs625JWU4edmD8DUzxbTt2Qb93VNhyOroaiiyMjZF/yiwSccOkVCxz7goDqrKUpbY2oiqLOyuKGW\nQVLK6y4mMAWcbK04nlnAlR/8y6hgbwCyC8v4eHUCMT290AnB1JhADp7OY8aieONx7g7WnKl4Mqis\nWK40e9Nx7K0tmb8tiX2vXAXA7aOHIBgCQZ5QroeTWyF5G5zeC8mxsH/JuaBcu0CnPuATBh1CwDsY\nXLoYR0NVFKXtqq/V0EDgJDAP2IpWLKQ0gn0p50YVLS4rr7ZtakwQDtaW+LnbceMXmwH45YGBfL72\naLUb/5qD6dw7OIBvNx4HINTXhQOpuVjozv0zbTqaib21JYOCPMHCEvwHa69KRWfh9B5I2QWndmrv\nVZODhQ24dQU3/yqvgIr3rmDt0Fh/EkVRzKi+ROADjEIbcG4isBSYJ6Xc1xyBtWUTojszKtib6yI6\nsTMpG3cHa5bEpQDw9C97CPN14ffdKcb9O7vb12hRBLBgexJDu3viaGPJjEXxdO/gSICXVrEcfyqH\nn7Ym0cPbiYdigmoPxM5VqzsIGHZuXXEupB+A9H1w5hhkJ2qvpC1Qct6w2A4dwD2gliThD47e6mlC\nUVqJOhOBlLIcrRPZciGEDVpCWCuEeEVK+UlzBdgWDenuafwc1cUNawsdhaXlPHNVL+7/PrZGS6MB\nb6yu9TwFpeWsT8jE09EagIT0fH64Txu+unICnPOfOBpk6wxdBmivqqSEomzIPn4uOWQnwpnjcGIz\n7P0ZpOHc/pa25z1JVLzsPcHGEWycwMZZexfqYVNRzKneyuKKBDAWLQn4A78D30op6x89rZG1tcri\n8xWU6Lnxi02cPFPIk6N7UqI3cH2kLxLJwDfXmHQOZ1tLcou1jmfv3BRON08H9iTn4O1sy5Uh3lg1\n9WB1+lLIOVk9UZw5DtkntHWldQyhLSzA3kN7gnDsoL3bu4OdW8W7e/V3WxewslfJQ1FM0BiVxXOA\nUGAZ8LKUMr6ufZVLc/B0HgdP5wEQ3NEZa0sdPi62+E9fCsCiqYOYv+0kC2JP1nmOyiQAcPJMIbdE\nd+bpX/ZwLLOAxQ8NJrJzEzcZtbQGj0DtdT4ptU5u2Ylay6WSXCjJh+IcKD4LBRmQnwH5aZB5WNu3\nrKDua1nZg4On9kRhaaM9fVjaaHUallVeFjZaPYadW8U+1tqxVvZgbQ9WDmBhrdV+CQuwsNKWq70s\nQWelbdNZqgSktEn11RHcCRQAPYBHxbn/AQQgm3OGsrauk6stTjaW/DB5AM8t3ksHJ1u+vaefcXuf\nLm7sT80l9sQZnO2s2JV0rkPaq9eHciKzgFkbjhvXRXZ2NSaRyvOfT0rJNxuOE9XVjagubmTllzB/\n+0lGh3gT1MGpcb+gEFrz1AtpolpWrBVFFZ2BwiwtORRla8mjIEMbdK8kD8pLQF+iJRZ9pva5cp2+\nWFtvKGvE71KRMHRWNZOEzrKObRbatsokZGWnvVfuY2kLouKJTafTrqGzqPKu017V1lXZVmP9eeeo\ntk8d56/r3HVuUwmxLamvjkDV9DWTji527H15NKCNRurmoJX5J741FgD/6Uux1AkevaI7w3t6cfe3\n28gu1G5uzy+Op3fH6jn5vjnVi9E8HWpOb2mQ8NrSA9zWvzMBHg5kF5bx7opD+LnZNX4iuBhWtmDV\nEZw7Xtp5pITSAigv1RJDWZG2XFaovRsqnqQM5do+5WVaIikv1ZrclpdqiaRcr70b9No+xncTtulL\nwVAIeWnadcsKtTgMei1hyQusx2kRhOkJqOp+0qC9DOXa9zfotc+ViRBZ/RpCVLzrTE981dbrqp9H\nGrRrSIP234aUtawz1L4fVbbVOK62/c4/l6x4UrWu8tRqrf0YELrq5zOUVxxbDrf8oLXSa0KmDDqn\nNKMZY4NrXa83SN5feZge3k4sfXQod3yzlWMZWvFJQ5Pcp+UVG+saNk4fwUNzd3LnZV15+8Ywnvl1\nL/O2ncTfw56nRvckqotb434hcxNCq5xuycr1GG+AhnLtf/7Kdylrrqu8SZi0vuJmYjDUsm9D62vb\nZup1K9cZtJt95XLljdn4BGVZ5SYIxpu28YZa5cZaa6z1xKMvPXds5XmMiUF33hOPOG+9OG/fKu81\n1tWyX+X3qLqPlOd+aOgrXoYybZ00VI/j/GTaxFTP4lYgp6iM33ensPZgOh/eGsmzi+L5Y3cKn02M\nYkA3d6JfW4WPsy2nc2sf9SPCz4XdyaaNG/jjfQOqtWpSFKX1aszJ65uEEMJCCLFLCPGnuWJoLVzs\nrHC2tSQlpxgJnC3UehfvST6Lp6MNkwb7czq3mDBfFyx0gmsjOlU7fndyDmPDGy5iuW9IAJYW9Zf9\n7kzKZt62pHr3URSldTFnPcBjwAEzXr9VierixhW9OpBdUEpabjFjQn3479W9AZjQrzMAD48Iwt/D\nnj+qdEYD8HS0ZumeVONy8Hl1CgGeDrx2fSjfbDhOXJWRUSsVl5VzOC2PjLwSvt+UyLOL9hq3JWae\na91z8kwhSVmFl/5lFUVpVmapIxBC+KH1T3gdeMIcMbQ2WQWlfLX+GIODPJl3/2VYWZ7L4b18nDn+\n5tXc+tUWjmacuzFHdXFlZ9JZMvNLq51r/3l1CsczC3husdY6+IY+vlz36Qb2JOdw18CuzN2ahIeD\nNel5JdhY6rgq1If7h3YDYOX+NO7/PpaZd/ZldIgPT/+yB4B5Uy5rkr+BoihNw1xPBB8CTwOGhnZU\nNJGdXdn9wpVEdXXFw9EGZ1uratuFEHRytTMuB3o5sLNKM9N+/qZVAl/14b/sqahP+H7zCcoNkvS8\nEgBK9AaWxKUgpURKSVAHR54a3ZOQTtoThq+bHV3c7S/peyqK0vyaPREIIa4B0qWUOxrYb4oQIlYI\nEZuRkVHfru2GnbUFNpZ1tyB4/5YI3hwfBsCDw6uPL7Q9Mduka1Q2S/3zkSF8dWdf4/p3bgpn67NX\nAPD1+uME/PcvYv63Fl9XO0r0BsZ9uoEnRvXgP1f2uKDvpCiK+TV7qyEhxJtondX0gC3gDPwmpbyj\nrmPae6uhCxF/Ksc4ztDC/xtIib6cO7/ZVm2fewb5M3tTonE5pJMzSWcKyavSOxlgWA8v/j1cexK2\nttBRWm6gd0dnY/NVdwdrOrrYsvTRoY34jRRFuVgtttWQlPK/Uko/KaU/cCuwpr4koFwYV/tzRUY9\nfZyqJYHRIdrcB5VJwMtJ62i2LyXXmASsq4xJVFcSADj8+hgeigk0JoExoT6cKSg1DrGdcrbI2LpJ\nUZSWTfUebmP83Ow5/NoY/n0qhoiX/wZgUKAH10d24uGY7jw64lyRUUZF2X9VPXxM63w15O01LIxN\nNi7Hp1TvpzDsnX/46t9jxuVyg6SgRE/lE+gTC+OqtWRSFMV8zNqzWEq5Flhrzhjaor2ncow3XEud\nYOvxM9qNuLSclfvT6jzO29mG+FPaL/r7hgQQ4OlgbE10vuTsIgCCOjhSVFrOyTPa8hOjerAhIZOh\n3T3p6XNuqIoft5zgxd/3sfP5Ubg7WPPbzlOknC0yqX+DoihNSw0x0Qbd+MUmAJY9NhRPRxv+OZjO\n07/uMc5NsP+V0VhZ6DiRVcC7Kw7h4WjDA8MCmbZgF2G+LuQUlfFNxSB2K6YNY/SH/9Z5rSPp1YeX\nfn/lYeNnPzd7PlqVwI19/bi8hxfPXt0LWyvtIbRyHCVTSClZHn+awA6O9PBuAeMgKUoboxJBG/TT\n/QMwGDAORjcmzIe03GImD+1GuZTYW2v/7H5u9lwd1hFLnY5OrrZ4OdmQXVhWrYXR6A+1eZXPf5K4\ne2BX5mw+UW8cP2zRtv+0NQkvRxv+3pfG5CFaH4ScwjKETnvv7G7PsYx88kv02FtbcMvMLYT7uTB7\nUn82Hclk4qytAFjoBEffuJr8Ej2ONuo/XUVpLGqsoXYsPbeY/hWzn617ajhbjmUxd2uSsR9BVf38\n3Xj1+lAOp+Xz6LxdxvVDu3vy/i2RDH1nDcVltXcL2Th9BN9tOM6sDcdrHRPp1XEhvL/yMNmFZfz6\n4EDjXM0fTIjg8QW7jftd0asDQd6OzFx3jPdujuDGvn6X/DdQlLasxbYaUloOlyotjFJzipnQrwsd\nXbS5C76/tz/H3riamJ5egNYP4blF8aSeLap2jl4+Tvy45USdSaCblwOD31pjnC+htoHxnl+yDydb\nKzwcrPllx7nJ736Pqz5UxuqD6cxcd4wrg73p6nGu49pHqxLwn770wqflVBQFUE8E7d6ZglL2p+QS\n3tkFZ1srSvTllOoNOFhbotMJsgtKOVtURsz/1jZ4ro9v64ODtUWN+RDON3tSP15Yso+kMw2PS/T3\n48PIKSrj5i+1p4Sjb1yNha76wHjjP9/IzqSzbJtxBeUGydC3/+Gru/oyopfWXPZAai5jPlrPgimX\n0d3bCQeb+jvmKUpbYeoTgUoEikl+25lM3MmzBHVw5Eh6PvnFen7bpf16//3hwXy74TiL41JY/3QM\nG49kMv23vXWe6/1bIujn787Qd/5p8LqdXGxJyan5FLH6P5fzvxWHCPV1YW9yDtf36UQ3L0emfB9L\nYlYhr4wLoZ+/O3O3nsDbyZb3qlRiTxvZnZujO7PjRDbXnTdSq6K0JZc8Z7GiVDU+yo/xUVqZ/Kz1\nx0g5W8zRN65GbzBgY2nBf67syegQH9wdrMkqqN6R7Lb+nZm37dx8y08s3I2paksCAFO+j+VoRgHL\n4k8DMLi7Jw/8eK51U1puMWM+Wl/tmPuHBrA9MZse3k7c9c1WjmYUcE1YR3Q6gZSSuVuTuCrUB0/H\nmjO6KUpbpp4IlAs2eU4sqw6kMWmwPy9eG1Jj+/3fx7I3OYcpw7phkJL7hgRQOed11bmU6zI2vGOj\ndTYbG96R/GI9+1JyyMwvZfuMkcYe1QaDRFdRzJSZX0L0a6v4z6gePHJFd+P2glI9tlYWWFXpcX3y\nTCFXffgvb4wPY1ykb6PEqShNQVUWK03mP1f2wNpCx3cbE2vdPnFAF54Z05N7hwQweWg3YxIArf/A\nkocG13nunt5O/HdML54a3ZMvbo/iuohOxqExQOsgZ1XH5DkdnM79ku/ibs+vDw7kkRFBXN7DyzgU\nd7/XV3HFe2vRlxuqzY5bqjdweQ8vBleZnS2roJSwl/5m9nnf81hmAQWl5fyyI5nalBskxWXltIYf\nWYoC6olAuUhnC0vJK9bT+SKHna46OB7AwVevYu7WJOysLOjh7cis9cfp7u3IJ2uOAFrz1svfXdsY\noVez+8Ur2ZeSw8SvtxrjKNEbuPKDddw9yJ93lh8CtErrrPxSrC0FfTq7kV+qx8ZSV2ul87bjZ7hl\n5uaLnvZzf0ouV3+sVW4P6OZxaV9QaddUHYHSpFztrXG1t77o4z9cdRhHG0vCfF3YfCyLBdtPct+Q\nAADWHc7geGYBy/dp5f+WOmEszmlsd3+7rdqsbPtTcwnq4EhabokxCQA8NHcnCRW9qB8f2YN7Bvlj\nqdOxISGTwUEe1Z56bpm5GU9HG/w9tSS5KymbN5cd5If7+pvUWqms3EAXd/saraMUpamooiHFLLp7\nO3FZNw82H8sCqFaMcnkPL1Y8PoxXx4UQ3dUNvUFSWFrO2PCO3DPIn6AO5wbG6+/vfkHXrZxEB7Rx\nkc6fmnPynFicbCx5dVwIEX4uAIzs7W1MAgAfrDpMxCt/E/jsX9xRUel8vsz8ErYdPwNAfEou246f\nITm7iGV7UzmeWXP/qiI6u/Lv0zFEX+B3U5SLpYqGFLN4+pfdrE/IZNHUwVhaiDpb6uSX6DlbWEpH\nFzvjL+Q/dqfwSEXvZk9Ha4Z19+K9WyLIKSoj6tWV9A9wJ8LPlaAOjsSfymlwKIyh3T35cEIkA99c\nQ2m5gTGhPowJ61itB3VVgV4O1W7+G56Jwc/tXBFZcnYhM9cd4+ZoP8L9XEnPKyblbDGrD6QZi7qO\nv3k1f+xJxc/Njqgu2uxxP2xOxNXemkGBHvy0NYnRoT5NOrbSlO9j8XKy4fUbwprsGop5qaIhpUV7\nZVwopeWGGlNuns/RxrLGuEJd3O25f2gA87adJDO/lI1HM1m6N5XNR7O487KunMwuYmaVIbDr4+1s\nw/qETJ5bHM+6p4cz8M01LIs/bWyWWptuXo7Mm3IZ6w9ncuJMIY8viGPW3f34Zv0xPlt7lHKD9uPq\n/qHdeGFJPN/XkoiOpJ8bquPZq3vxxl8HAW0018JSPe+tPMy2xDN8eUdfHJpoXKV9Kbm42NX/91fa\nB5UIFLOwtbLA1urievfuSsrm6/XH+d/NEXRysaWzu72xc9qb48OI6urGyN7eONhY8Nj8OACsLXVE\n+LnUmLJzZG9v5m5NYln8aR6KCapxrdqs3J9WYxC+T9ck8PX648ZlLycbjmXm15oExkV2YtQH5/o8\nLKkYSmN8lC+ejjY886vWGW99Qibxp3KwtNBx05eb+M+oHnT1cCAhLY8V+9JY+ugQSvQGyqVsMKHm\nFpexaOcp7hrY1VifsXH6CJO+r9L2qUSgtDpXhXYk1NeFiM6uxvb9Pb2dOJSWx019/Rj78XoCvRz5\n4o6+vPT7PoQQPHllTywtBM62VtwxsCtRnd2YteGYsagGqNaKqfKcIb7OvHhNCOO/2FhrXUClqkkg\nuKMz+1Nzuee77bXuG+3vjrWFzlhHUtkM9bed58ZZ6uXjxMHTeUz4aotxXUcXO2ORGMA7Kw6xJ/ks\nW46dIdzPhQ8mRBLopdWfpOcVsyMxmzFhHXliQRxxJ89yLLOAQYEepOWWcMc3W3n9hlAGBHhUq3NR\n2ieVCJRWx8fFFp+KwfEqrXh8mPHz/UO7kZGvzb72xg1hfLDqMK72Vkydu5OXrg0mpmcHDp3O45M1\nR+jn78ZL14Xg52bPPd9t42h6PnMnX8bOpGxe/H0fh9Ly+G3nKQ6/NgZrSx2/7kjm5x0n2XLsTI24\nbuvfhbiTZ3koJoiHftpZZ/zPV0z28/OOZD6d2Ac/NzvWJ2Sy40S28Tz7K6YArdSniyuG8+rzqs4A\ntyc5h01HMvF0sMHO2oJvNyTy5bqj1YYQnzTYHxc7K+NT0oxF8cZz//LAoHpbKenLDRSVlePUwJOH\n0jqpRKC0OdsTz7A+IZOpw4NIyy3mcFo+Npbak8OZwjJAK4vf9fwo7KzPFVEtmjqYl//Yx887TlJQ\nUn0k0x7PLePwa2O4sa8f46O03sRCCD5encD7Kw/z0/0DmLnuGAdSc+tNAud7+KeaFdK/7kymVF99\nNNddSWerdZiL8HNhd3IOo0O8WbFPu9E/v2Qfzy/ZB4Cvq12N83o72zL2kw1k5JUwNrwjaTnFxJ7I\nZlfSWdYdTmd4jw7odIIdJ87w4aoEpo/pRUgnreXU9N/28suO5FonFPp9dwobEzJ5+6Zwk7+30rKo\n5qNKm/PKuFCWP6Y9IZRU3FD7dnVj2WNDuXewP6BNcuPmYF2tniKvuIztiWdISMvH19WWAE8HEt8a\ny+8Paz2hezy3jKLScoQQBPz3L7rP+At3B2uiurgyKNCTdYczuC6iE38+MoQnr+zBT/cPYEDAuSag\npg5wd34SqFR5wwfYXTFnRNV1VftanKoYLnzl/jQ8HLT+Hm8tO0gvHydu69+ZpXtSierqxqy7tAYl\nk+fE0u3Zvygs1fPf3/ayPiGTsR9vwH/6Un7bmczmo1oz3+W1VKL/HHuSBbEnKSotJ+rVlXy57iiP\nzNtFWfm572EwSNJrGYJcaRlUIlDaHFsrC+NcC7f268LaJ4fjbGtF747O9XaCC3vpb+JP5fLm+DCe\nuLIn/zw5HIBwP1f+eHgIkwb7G6faBCgrl9w+oAu/TdUSxZb/XsE7N4UT6uvCyv1p/LrjFFuPn+HN\n8WHMuisaBxst6QR3PNeX4Y7Luhg/966y/rtJ/Rr8nrcP6FJtOSOvpMY+HZxsqg0CuD4h0zgA4Ff/\nHkMIsLe2oKKhE8EvrCDCz5V3bgwnwNPBuF9lYjl0Oq/a+fXlBtYnZALwb0IGZwpKeWvZQf7YnUJa\nbjF7k3P4eHUCn689Qv83VvPyH/tq/S7bjp/Bf/pSkrO1ockLSvToy2tPiOcrN0ie+WVPjWlTFdOp\noiGlTXOxt6o2AU99/np0KGl5xfhX3ACrCvNzIayigxnAqicup6BEX61HcdV6ix7eTvi52bN82lAC\nvRzpPmOZcVvV8v9HR3THQgh8XOwY0M2d8Z9v4qnRPfn3cAY2ljrjE01ndzs6Otvx6BXdySooYWxY\nRxbtOsXcrUnV4pw+phdvLTuIi50VFjpBei3Joara5o74eUcyD48I4qPVCQAcrHLzD/dzYdb6Y9hY\nWRjrOiq9+ud+4+eh3T3Rl0vGf7GRsnLJzw8MBOC7jYmUlRt4bmxwtaexrIo6nZyiMvzcIOTFFVwX\n0YmPb+tTb/ygTXa0IPYkIb7OquL7IqkOZYrSxCpHXO3v7871fXx5dpHWPHRod09u6utnrLx97fpQ\nnlscj7WFjtJyA9aWOj6bGEWp3sALS+L5/PaoWsce+mVHMkVl5dVuzFeF+HDbgC7c/e22Gvv/7+YI\nlsSdMv6SvxiX9/Bi3eGMCzrm3ZvCtRZcP2vDkL81PozeHZ1xsLGkq4d9tRFep83fRUyvDoT5ujB3\naxKudlY8ckV3yg0SKSWWVfbNL9GzdE8K0f7uxlZTikZNTKMoLcSiXcnkF+u5c6C/cd37fx/C182O\nzPxS3l1xiBv6+HLXwK7c8PmmGpPx9PR2YsnDg7G1smDxrlOsPJDGZxOjjNu7z/gLfw8HHGwsqw2Z\nkfjWWKSUnDxTxKTZ2xgZ7M3MdcfwcLDmushOfLcxkefG9ua1pQeqxRvg6dDgMBgAkZ1dawzR0ZCp\nwwP5fO3RGusfjgniroFdcbG3Mo7HJKUk4L9/GfdxtbfibGEZMT29+G5Sf0ArQoo/lcO/CRmMCvYh\nsrMrydmFpOWW0Kezq3GY8fZK9SxWlBbihj5+NdY9cWVPQCsKyS0u4z+jemKpE6x/OgYnW0tK9QYO\nnM7j7m+3cSgtj5IyA7ZWFqw9lM7SPal8NvHcuWZP6o+DjSUbj2Qab8wf3RoJaC2bunjYs/o/wzmS\nnsfMdccI8HQw/nLu5uVA7HMjiX5tlfF8LnZW3Na/C/O2VS92Ol9DSWBYDy/+Pe+p4fO1R439LKr6\n9J8jfPqP1qcjpqcXKWeLuaVf52r7nK1o8fXPoQwWbE/i87VHmTo80NgBzyC15PTCkn2sOZjO5v+O\noKNLzdZToI1+u/X4Ge4d7G8s3jMYJB+uTuCOy7rQwcm21uPaKpUIFMWMXOys+O+Y3sblqsN6O9tZ\nEerrTEJaPk622v+q790SyRvjq48NNDhIG+o6srMrAwM92H78DNdFdDLO1Rzc0Zm/HhvKqgPpAMy5\ntz8GKdmXkks/f3esLHQ8fVVP7K0smL0pkbiTZ3npuhD+OZjO6SotfXxd7YyVxkC1pqug9dJedUBb\n/vKOqDqLjvan5vK/m6gqTocAABK/SURBVCNIzCzgeFZBjUmI/jmkHVe1zgHAykLwzFW9eG3pAePN\n/4sqTxdfrD1Kem6JsT/E5DmxfDoxit92JrM47hRPViTfcZG+vL70AJuPZbH1WBbv3BSOq701h9Pz\n+Hh1AkWlemaMDa419rZKFQ0pShvy+tL9fL3+OL9NHYSfmx39X1/N1OGBPH1VL7YdP8Os9cf44o6+\n9XYeyy/RoxNaC6La3DPInweHB+LtbMvkOds5nlnA57f3paePU40Z6FztrXjhmmCG9fDShuY+b/v4\nKF+QGOe/Bq011I4T2dUqqQFmT+pXrbd2747OHEjNpZuXA8eq9Pp+5qpeuNhZsfpAGruTc8jMr15h\nvmLaMNYnZFQrEuvn78a8+y8j8pWVRPu7Mbui6Glvcg5zt55g2sgeNToxXqiycgMFJXpyi/Q42Fjg\n0QxToqqiIUVph0J9tZZNu0+eJaqLW7UOYP0D3Okf0PDQ1o42lkgpeeDyQMJ8XYg7mc3aQxm8+f/t\nnXmYFNW5h98fMw6brCLKMqyKuCCyiAJxiRIQNRohIRBvJImJicaouWqiMcnVxDxIvBrN5haNMXGN\nS8KV4BYRoyCrsjqsIaAMmxhA9hm++8c5Pfb0LEwPPd1m5nufp5+uOl1V51dfVddXZ/vOqD40Lcgr\nG2QG8Lvx5bu5Lrh5OCfe/FLZekmpMXv1FgZ2bQuHhgl+GkkMu3MaUD6sRoKC/Ea8cM3pvLh4Pd/8\n49yy9GQn8Ktx/Ti+Y0vOumNaOScAMPGFomrP7+on3ubXX+rPlEXry0Zzz179IUuKt9GiST5N8vMw\nM374l0VlvbI+2LGXX43rR5ND8nh81ho6tm7KGb0OB+DJ2WsY0rMdbZsX8OaKzfTp3KrSKqmbJy3m\n0Zlr6NS6KW2bF7B7XylPf2tIjXu11SVeInCcesbfFhZzVu/2tQ7ql8r0FZv5rwdn8sRlg2nZNJ8b\nn13Ij88/jn4xfHYyj81cwyvvbuBLg7qwddc+ro09hK789FFcNyJUzezeV0rvH71wwHx/Na4f7/97\nF7dNKf9gT8RhAsp6WGWS60ccw+0vLq30txevOZ3R90xnQNc2rN+6m6UbtlfYpn+X1lw34hg6tmpK\n5zZNyc9rxBWPzmXdv3dzWPMCitZvL6tie+bywQzoWtE5//7Nf/Lhjr1lbUm1xXsNOY6TUcyMeWv+\nzeh7pvP4N05lcM+KXVkv+PUbLHhva1lJ5PkF63h81hpuG3ViufaPtVt2ckTLJhTE0B/3TVvJhCkV\n3+QH9ziMx75xCkXrtzPy7n9w99iT6NCqKWPumwGEMOIXn9KVV4s2ljVe/+KLffnuk/PLjnH+iR14\nPrZDjD25kCdmr82QRQ7M5Wf2ZFC3tnz14dkM6NqGH5zbm9H3BO3PXD6Y0ffMYPzgrvxhxr9YfMsI\nmjfO570Pd/KpiSGabmUhPdLBHYHjOHXC7n2lVZY2rnr8bRa9v5VX46jsdDAz3lixmR17SjipsA2f\nv3c63zitB7dOXsL3RvTmKzE8iAjRXkcP6ESLxqFaZefeEgbEnk/LfzaSzR/tYfCEV4HwMJ68oJg1\nW3aWy2/coMKyUdYHonlBHjv2llZIP7r9oeVmrwNod2jjCu0SldGyST7bdpdwfMeWLF63jb9+eyh9\nC1vz5zlruf7pBYwb1IUJow5u0iB3BI7jZJ19pfsRlBvwdTDsLdnPF++fwdeGduezVcRqGjzh7xRv\n3c2fLj2Facs2cvWwXhzaOJ97XlvJxBeKWHrrOVz8wEzmxPaAO8f0pU2zArq3a86Z//saAB1aNaF4\n626+MKAzJ3dvy5iBhUwt2si+0v1c9se5ND0kj137PnYEjURZWI4Ek6/6FOf9snwo84NlyU9G0Kyg\n9k257ggcx6kXVFcCAVjzwU6K1m9j00d7uOm5Rcz8wdkc0fLjHj5mRr+fvsyYgYWc16cDndo0ZWrR\nRk47+nCaHNKIGSs/4IROrbhtShGTFxbzzOVDGNA1tH+k9nKCEGbjwpM6lXVvnTCqDzc+u5D8RqIk\n1TscJIVtm/KP79V+AqGaOgIPOuc4zieaAzV6dzmsGcOPP5LR/Tsz+6ZhFea/Xr7xI45s2YSzeren\nb2FrFr6/leufXsDryzbRulkBI/t04Nqn5jNjVYiw+n/z15Xtm5gm9WcXncCkK4cy5erTGNStLT99\nfgm3jepDs4I8TujYis5tmlbpBH7/lZPpE3tz/fC8MGbkjF6HM2ZgZ4Yd256ze7ev8tzWbtlFNl7W\nvfuo4zj1gqqmP22Sn0eXts3Kfvv0Me2ZdOXQsoczwKzVW/hs344c2bIxF/TtVJa+6JYRFY43fkg3\nduwt5fMDOjN2UIgAO/k7pzHugbdYUrytQq+jrz48m1evPYMubZvx85h+35cH8JlfTGPtll1ccWZP\n7hp7Ehf9djo/PO9YHp6+mteWfjwYb8fe0grzdmcarxpyHKfBs3+/IVEummy6LNuwndeXbWLMyYXs\nLdnP4nXbeP/DXfxryw6+P6I3jRqJPSWlbNi6hz0lpeXmrU7uHXTJQ7OYs3oLD1wykM0f7WHE8UfW\nuiuwDyhzHMepIZkITtfriBb0OqJF2XpiwFkyjfPz6HJYM9am9GBK5uqzj2LPvv0MiaFDskHWHYGk\nQuAR4EhgP3C/md2dbR2O4zi5orBts7JSwL6UAXGVDTCra3JRIigBrjWzeZJaAHMlvWxmSw60o+M4\nTn3jkAx1tT0Ysq7AzIrNbF5c3g68C3Sqfi/HcRynrsipK5LUDegHzMylDsdxnIZMzhyBpEOBZ4Br\nzGxbJb9fJmmOpDmbNqU3JZ7jOI5Tc3LiCCQdQnACj5rZs5VtY2b3m9lAMxt4+OEVW98dx3GczJB1\nR6DQUfdB4F0zuzPb+TuO4zjlyUWJYCjwZeAsSe/Ez7k50OE4juOQg+6jZvYGIZKs4ziO8wkg9x1Y\nHcdxnJzijsBxHKeB8x8RdE7SJuBftdy9HbA5g3IyhetKD9eVHq4rPeqrrq5mdsBul/8RjuBgkDSn\nJtH3so3rSg/XlR6uKz0aui6vGnIcx2nguCNwHMdp4DQER3B/rgVUgetKD9eVHq4rPRq0rnrfRuA4\njuNUT0MoETiO4zjVUG8dgaRzJC2VtELSDVnOu1DSVEnvSlos6eqYfrOk9ysLrSHpxqh1qaSKM2Zn\nTttqSQtj/nNiWltJL0taHr/bxHRJ+mXUtUBS/zrSdEySTd6RtE3SNbmyl6SHJG2UtCgpLW0bSRof\nt18uaXwd6bpdUlHM+zlJrWN6N0m7kmx3b9I+A+I9sCJqP6iR/lXoSvvaZfo/W4WuJ5M0rZb0TkzP\npr2qej7k7h4zs3r3AfKAlUAPoACYDxyXxfw7AP3jcgtgGXAccDNwXSXbHxc1Nga6R+15daRtNdAu\nJe3nwA1x+QZgYlw+F5hCCAlyKjAzS9duPdA1V/YCTgf6A4tqayOgLbAqfreJy23qQNdwID8uT0zS\n1S15u5TjzAIGR81TgJF1oCuta1cX/9nKdKX8fgfw4xzYq6rnQ87usfpaIhgErDCzVWa2F3gCuDBb\nmVv6s7BdCDxhZnvM7J/ACsI5ZIsLgT/E5T8An0tKf8QCbwGtJXWoYy1nAyvNrLoBhHVqLzN7HdhS\nSZ7p2GgE8LKZbTGzD4GXgXMyrcvMXjKzkrj6FtC5umNEbS3NbIaFp8kjSeeSMV3VUNW1y/h/tjpd\n8a1+DPB4dceoI3tV9XzI2T1WXx1BJ2Bt0vp75Gg6TFWche3KWLx7KFH0I7t6DXhJ0lxJl8W0I8ys\nGMJNCrTPga4EYyn/58y1vRKka6NcaPwa4c0xQXdJb0uaJum0mNYpasmGrnSuXbbtdRqwwcyWJ6Vl\n3V4pz4ec3WP11RFUVoeX9e5RqjgL2z1AT+AkoJhQNIXs6h1qZv2BkcC3JZ1ezbZZtaOkAuAC4M8x\n6ZNgrwNRlZZs2+4moAR4NCYVA13MrB/w38BjklpmUVe61y7b13Qc5V84sm6vSp4PVW5ahYaMaauv\njuA9oDBpvTOwLpsCVMksbGa2wcxKzWw/8AAfV2dkTa+ZrYvfG4HnooYNiSqf+L0x27oiI4F5ZrYh\nasy5vZJI10ZZ0xgbCc8HLo7VF8Sqlw/i8lxC/XuvqCu5+qhOdNXi2mXTXvnAKODJJL1ZtVdlzwdy\neI/VV0cwGzhaUvf4ljkWmJStzGP9Y4VZ2FLq1y8CEr0ZJgFjJTWW1B04mtBAlWldzSW1SCwTGhoX\nxfwTPQ7GA39N0nVJ7LVwKrA1UXStI8q9peXaXimka6MXgeGS2sRqkeExLaNIOgf4PnCBme1MSj9c\nUl5c7kGw0aqobbukU+N9eknSuWRSV7rXLpv/2WFAkZmVVflk015VPR/I5T12MK3fn+QPoaV9GcGz\n35TlvD9FKKItAN6Jn3OBPwILY/okoEPSPjdFrUs5yF4J1ejqQeiNMR9YnLALcBjwd2B5/G4b0wX8\nJupaCAysQ5s1Az4AWiWl5cReBGdUDOwjvHVdWhsbEersV8TPV+tI1wpCPXHiPrs3bjs6XuP5wDzg\ns0nHGUh4MK8Efk0cWJphXWlfu0z/ZyvTFdMfBr6Vsm027VXV8yFn95iPLHYcx2ng1NeqIcdxHKeG\nuCNwHMdp4LgjcBzHaeC4I3Acx2nguCNwHMdp4LgjcKpEkkm6I2n9Okk3Z+jYD0v6fCaOdYB8vqAQ\n5XFqUloffRxlcoukf8blV+paT8z/IknXp7F9vqRSlY/QWuP9M4WkWyVdU0n6UYpRPJ3/TPJzLcD5\nRLMHGCVpgpltzrWYBJLyzKy0hptfClxhZmWOwMwWEkIfIOlh4Hkze7qSfPLt44BuGcPMnqvFbtvN\n7KRMa3Ec8BKBUz0lhKnyvpv6Q+obvaSP4veZMWjXU5KWSbpN0sWSZinEdO+ZdJhhkv4Rtzs/7p+n\nEGN/tkLAsm8mHXeqpMcIg2pS9YyLx18kaWJM+zFh8M69km6vyQlLGibpFUlPAG/HtPFR/zuSfiup\nUUwfKWmGpHkKce6bx/TbJS2J+idWksfXJd0Vl/8k6W5J0yWtknRRTXQmHes9hdj/b8f8esX0syTN\nj5rnJWm7IZ7LgmifxBv9IoXgcIslPSJpRNS0TNLApCz7xeuwXNLXKtGTL+nOpDy+ns75OLnBSwTO\ngfgNsEDSz9PYpy9wLCEE8Crgd2Y2SGECju8AieqFbsAZhOBkUyUdRRjCv9XMTpbUGHhT0ktx+0HA\nCRbCF5chqSMhFv8A4ENCdNXPmdlPJJ1FiIs/Jw39pxJi4a+RdAIhRMIQMyuRdD8hRMIrhJjxZ5vZ\nToWgb1dLepAwSvR4MzPFiWIOQHtgKNAHeIoQAyqVFinVL7cmlWI2mFk/SVcRAqZ9C7geuMzMZioE\nN9utMDlMF+AUwmjVv0kaQohpcwwhLHMRYWTtHjMbIml0PM+E0+8DDAFaAvMkTU7ReRmwMV7vxsBb\nkl4yszU1sIOTI9wRONViZtskPQJcBeyq4W6zLcYkkrQSSDzIFwKfTtruKQtByZZLWgX0JsRLOTGp\ntNGKEPdlLzAr1QlETgZeM7NNMc9HCZOS/KWGelOZkfTgGhaPP0dhYqqmhJAOOwmTiUyP6QXAGwTn\ntx94ID4kn69Bfn+xMMR/gaSqwghXVzWUCFo2l+CEAN4E7oolqGfM7CNJwwmB/d6O2xxKCKy2kTAX\nwBIASUuARHvJQuDGFK27CY7ldYJtipJ+Hw4cK2lsXE9cP3cEn2DcETg14S7CW+Lvk9JKiFWLCk/C\ngqTf9iQt709a30/5ey41vkkitO53zKxc8CxJZwI7qtB3UFMHVkJyPgIeMrMfpei5CHjBzL5cQUyo\nSvkMIXDa5YSHY3Uk26s255LYv5RoXzO7VdIk4DxgdrSfCCWJB1P0HsXBXbNyhyO0yfy9Fufh5Ahv\nI3AOiJltIVRZXJqUvJpQFQNhBqVDanHoL0hqFNsNehCCkL0IXK4QphdJvRL129UwEzhDUjuFCJLj\ngGm10FMZrwBjJLWLeg6T1AWYHvPsEdObSzpaIbprSzN7ntC20i9DOtJCUk8zW2BmEwglgGMItr00\nqb2gc+K80uBzCpFD2xEmd0mtcnsRuEIh1HNiPuqmB3UyTp3jJQKnptwBXJm0/gDwV0mzCJESq3pb\nr46lhAf2EYRokLsl/Y7QdjAvljQ2cYCpAc2sWNKNwFRi3beZZSS0spktlHQL8EpsJN4Xtc6WdCnw\npELYZIAfEKrPno31440IdfaZILWNYLKZ3VTN9tcpzLK1nxDl8iUz2yupN6HeHmA78KU0dcwmzIJW\nCPyPmW2Izi/BfYR2iHdiHhvJ4jSxTu3w6KOO4zgNHK8achzHaeC4I3Acx2nguCNwHMdp4LgjcBzH\naeC4I3Acx2nguCNwHMdp4LgjcBzHaeC4I3Acx2ng/D971W5xzhXp2gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f07772ba518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f077408b358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "__author__ = 'mike_bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "from pylab import *\n",
    "import matplotlib.pyplot as plot\n",
    "import numpy\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn import ensemble\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data\"\n",
    "#read abalone data\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "for line in data:\n",
    "    #split on semi-colon\n",
    "    row = line.decode().strip().split(\",\")\n",
    "\n",
    "    #put labels in separate array and remove label from row\n",
    "    labels.append(float(row.pop()))\n",
    "\n",
    "    #form list of list of attributes (all strings)\n",
    "    xList.append(row)\n",
    "\n",
    "#code three-valued sex attribute as numeric\n",
    "xCoded = []\n",
    "for row in xList:\n",
    "    #first code the three-valued sex variable\n",
    "    codedSex = [0.0, 0.0]\n",
    "    if row[0] == 'M': codedSex[0] = 1.0\n",
    "    if row[0] == 'F': codedSex[1] = 1.0\n",
    "\n",
    "    numRow = [float(row[i]) for i in range(1,len(row))]\n",
    "    rowCoded = list(codedSex) + numRow\n",
    "    xCoded.append(rowCoded)\n",
    "\n",
    "#list of names for\n",
    "abaloneNames = numpy.array(['Sex1', 'Sex2', 'Length', 'Diameter', 'Height', 'Whole weight', 'Shucked weight',\n",
    "                            'Viscera weight', 'Shell weight', 'Rings'])\n",
    "\n",
    "#number of rows and columns in x matrix\n",
    "nrows = len(xCoded)\n",
    "ncols = len(xCoded[1])\n",
    "\n",
    "#form x and y into numpy arrays and make up column names\n",
    "X = numpy.array(xCoded)\n",
    "y = numpy.array(labels)\n",
    "\n",
    "#break into training and test sets.\n",
    "xTrain, xTest, yTrain, yTest = train_test_split(X, y, test_size=0.30, random_state=531)\n",
    "\n",
    "#instantiate model\n",
    "nEst = 2000\n",
    "depth = 5\n",
    "learnRate = 0.005\n",
    "maxFeatures = 3\n",
    "subsamp = 0.5\n",
    "abaloneGBMModel = ensemble.GradientBoostingRegressor(n_estimators=nEst, max_depth=depth, \n",
    "                                                     learning_rate=learnRate, max_features=maxFeatures,\n",
    "                                                     subsample=subsamp, loss='ls')\n",
    "\n",
    "#train\n",
    "abaloneGBMModel.fit(xTrain, yTrain)\n",
    "\n",
    "# compute mse on test set\n",
    "msError = []\n",
    "predictions = abaloneGBMModel.staged_predict(xTest)\n",
    "for p in predictions:\n",
    "    msError.append(mean_squared_error(yTest, p))\n",
    "\n",
    "print(\"MSE\" )\n",
    "print(min(msError))\n",
    "print(msError.index(min(msError)))\n",
    "\n",
    "#plot training and test errors vs number of trees in ensemble\n",
    "plot.figure()\n",
    "plot.plot(range(1, nEst + 1), abaloneGBMModel.train_score_, label='Training Set MSE', linestyle=\":\")\n",
    "plot.plot(range(1, nEst + 1), msError, label='Test Set MSE')\n",
    "plot.legend(loc='upper right')\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.show()\n",
    "\n",
    "# Plot feature importance\n",
    "featureImportance = abaloneGBMModel.feature_importances_\n",
    "\n",
    "# normalize by max importance\n",
    "featureImportance = featureImportance / featureImportance.max()\n",
    "idxSorted = numpy.argsort(featureImportance)\n",
    "barPos = numpy.arange(idxSorted.shape[0]) + .5\n",
    "plot.barh(barPos, featureImportance[idxSorted], align='center')\n",
    "plot.yticks(barPos, abaloneNames[idxSorted])\n",
    "plot.xlabel('Variable Importance')\n",
    "plot.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)\n",
    "plot.show()\n",
    "\n",
    "# Printed Output:\n",
    "\n",
    "# for Gradient Boosting\n",
    "# nEst = 2000\n",
    "# depth = 5\n",
    "# learnRate = 0.003\n",
    "# maxFeatures = None\n",
    "# subsamp = 0.5\n",
    "#\n",
    "# MSE\n",
    "# 4.22969363284\n",
    "# 1736\n",
    "\n",
    "#for Gradient Boosting with RF base learners\n",
    "# nEst = 2000\n",
    "# depth = 5\n",
    "# learnRate = 0.005\n",
    "# maxFeatures = 3\n",
    "# subsamp = 0.5\n",
    "#\n",
    "# MSE\n",
    "# 4.27564515749\n",
    "# 1687"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### abaloneRF.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE\n",
      "4.300814944862819\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0774008d30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f077410ae48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "__author__ = 'mike_bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "from pylab import *\n",
    "import matplotlib.pyplot as plot\n",
    "import numpy\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn import ensemble\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data\"\n",
    "#read abalone data\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "for line in data:\n",
    "    #split on semi-colon\n",
    "    row = line.decode().strip().split(\",\")\n",
    "\n",
    "    #put labels in separate array and remove label from row\n",
    "    labels.append(float(row.pop()))\n",
    "\n",
    "    #form list of list of attributes (all strings)\n",
    "    xList.append(row)\n",
    "\n",
    "#code three-valued sex attribute as numeric\n",
    "xCoded = []\n",
    "for row in xList:\n",
    "    #first code the three-valued sex variable\n",
    "    codedSex = [0.0, 0.0]\n",
    "    if row[0] == 'M': codedSex[0] = 1.0\n",
    "    if row[0] == 'F': codedSex[1] = 1.0\n",
    "\n",
    "    numRow = [float(row[i]) for i in range(1,len(row))]\n",
    "    rowCoded = list(codedSex) + numRow\n",
    "    xCoded.append(rowCoded)\n",
    "\n",
    "#list of names for\n",
    "abaloneNames = numpy.array(['Sex1', 'Sex2', 'Length', 'Diameter', 'Height', 'Whole weight', 'Shucked weight',\n",
    "                            'Viscera weight', 'Shell weight', 'Rings'])\n",
    "\n",
    "#number of rows and columns in x matrix\n",
    "nrows = len(xCoded)\n",
    "ncols = len(xCoded[1])\n",
    "\n",
    "#form x and y into numpy arrays and make up column names\n",
    "X = numpy.array(xCoded)\n",
    "y = numpy.array(labels)\n",
    "\n",
    "#break into training and test sets.\n",
    "xTrain, xTest, yTrain, yTest = train_test_split(X, y, test_size=0.30, random_state=531)\n",
    "\n",
    "#train random forest at a range of ensemble sizes in order to see how the mse changes\n",
    "mseOos = []\n",
    "nTreeList = range(50, 500, 10)\n",
    "for iTrees in nTreeList:\n",
    "    depth = None\n",
    "    maxFeat  = 4 #try tweaking\n",
    "    abaloneRFModel = ensemble.RandomForestRegressor(n_estimators=iTrees, max_depth=depth, max_features=maxFeat,\n",
    "                                                 oob_score=False, random_state=531)\n",
    "\n",
    "    abaloneRFModel.fit(xTrain,yTrain)\n",
    "\n",
    "    #Accumulate mse on test set\n",
    "    prediction = abaloneRFModel.predict(xTest)\n",
    "    mseOos.append(mean_squared_error(yTest, prediction))\n",
    "\n",
    "\n",
    "print(\"MSE\" )\n",
    "print(mseOos[-1])\n",
    "\n",
    "\n",
    "#plot training and test errors vs number of trees in ensemble\n",
    "plot.plot(nTreeList, mseOos)\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "#plot.ylim([0.0, 1.1*max(mseOob)])\n",
    "plot.show()\n",
    "\n",
    "# Plot feature importance\n",
    "featureImportance = abaloneRFModel.feature_importances_\n",
    "\n",
    "# normalize by max importance\n",
    "featureImportance = featureImportance / featureImportance.max()\n",
    "sortedIdx = numpy.argsort(featureImportance)\n",
    "barPos = numpy.arange(sortedIdx.shape[0]) + .5\n",
    "plot.barh(barPos, featureImportance[sortedIdx], align='center')\n",
    "plot.yticks(barPos, abaloneNames[sortedIdx])\n",
    "plot.xlabel('Variable Importance')\n",
    "plot.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)\n",
    "plot.show()\n",
    "\n",
    "# Printed Output:\n",
    "# MSE\n",
    "# 4.30971555911"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### glassGbm.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best Missclassification Error\n",
      "0.22727272727272727\n",
      "Number of Trees for Best Missclassification Error\n",
      "254\n"
     ]
    },
    {
     "data": {
      "image/png": "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\npXfNVAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0776152438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f077651dba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Confusion Matrix\n",
      "[[20  1  0  0  0  0]\n",
      " [ 2 21  0  0  0  0]\n",
      " [ 4  2  0  0  0  0]\n",
      " [ 0  4  0  0  0  0]\n",
      " [ 0  0  0  0  3  0]\n",
      " [ 0  2  0  0  0  7]]\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike_bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "from math import sqrt, fabs, exp\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn.linear_model import enet_path\n",
    "from sklearn.metrics import roc_auc_score, roc_curve, confusion_matrix\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn import ensemble\n",
    "import numpy\n",
    "\n",
    "\n",
    "target_url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/glass/glass.data\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "#arrange data into list for labels and list of lists for attributes\n",
    "xList = []\n",
    "for line in data:\n",
    "    #split on comma\n",
    "    row = line.decode().strip().split(\",\")\n",
    "    xList.append(row)\n",
    "\n",
    "glassNames = numpy.array(['RI', 'Na', 'Mg', 'Al', 'Si', 'K', 'Ca', 'Ba', 'Fe', 'Type'])\n",
    "\n",
    "#Separate attributes and labels\n",
    "xNum = []\n",
    "labels = []\n",
    "\n",
    "for row in xList:\n",
    "    labels.append(row.pop())\n",
    "    l = len(row)\n",
    "    #eliminate ID\n",
    "    attrRow = [float(row[i]) for i in range(1, l)]\n",
    "    xNum.append(attrRow)\n",
    "\n",
    "#number of rows and columns in x matrix\n",
    "nrows = len(xNum)\n",
    "ncols = len(xNum[1])\n",
    "\n",
    "#Labels are integers from 1 to 7 with no examples of 4.\n",
    "#gb requires consecutive integers starting at 0\n",
    "newLabels = []\n",
    "labelSet = set(labels)\n",
    "labelList = list(labelSet)\n",
    "labelList.sort()\n",
    "nlabels = len(labelList)\n",
    "for l in labels:\n",
    "    index = labelList.index(l)\n",
    "    newLabels.append(index)\n",
    "\n",
    "#Class populations:\n",
    "#old label     new label     num of examples\n",
    "#1              0               70\n",
    "#2              1               76\n",
    "#3              2               17\n",
    "#5              3               13\n",
    "#6              4               9\n",
    "#7              5               29\n",
    "#\n",
    "#Drawing 30% test sample may not preserve population proportions\n",
    "\n",
    "#stratified sampling by labels.\n",
    "xTemp = [xNum[i] for i in range(nrows) if newLabels[i] == 0]\n",
    "yTemp = [newLabels[i] for i in range(nrows) if newLabels[i] == 0]\n",
    "xTrain, xTest, yTrain, yTest = train_test_split(xTemp, yTemp, test_size=0.30, random_state=531)\n",
    "for iLabel in range(1, len(labelList)):\n",
    "    #segregate x and y according to labels\n",
    "    xTemp = [xNum[i] for i in range(nrows) if newLabels[i] == iLabel]\n",
    "    yTemp = [newLabels[i] for i in range(nrows) if newLabels[i] == iLabel]\n",
    "\n",
    "    #form train and test sets on segregated subset of examples\n",
    "    xTrainTemp, xTestTemp, yTrainTemp, yTestTemp = train_test_split(xTemp, yTemp, test_size=0.30, random_state=531)\n",
    "\n",
    "    #accumulate\n",
    "    xTrain = numpy.append(xTrain, xTrainTemp, axis=0); xTest = numpy.append(xTest, xTestTemp, axis=0)\n",
    "    yTrain = numpy.append(yTrain, yTrainTemp, axis=0); yTest = numpy.append(yTest, yTestTemp, axis=0)\n",
    "\n",
    "#instantiate model\n",
    "nEst = 500\n",
    "depth = 3\n",
    "learnRate = 0.003\n",
    "maxFeatures = 3\n",
    "subSamp = 0.5\n",
    "glassGBMModel = ensemble.GradientBoostingClassifier(n_estimators=nEst, max_depth=depth,\n",
    "                                                         learning_rate=learnRate, max_features=maxFeatures,\n",
    "                                                         subsample=subSamp)\n",
    "\n",
    "#train\n",
    "glassGBMModel.fit(xTrain, yTrain)\n",
    "\n",
    "# compute auc on test set as function of ensemble size\n",
    "missClassError = []\n",
    "missClassBest = 1.0\n",
    "predictions = glassGBMModel.staged_decision_function(xTest)\n",
    "for p in predictions:\n",
    "    missClass = 0\n",
    "    for i in range(len(p)):\n",
    "        listP = p[i].tolist()\n",
    "        if listP.index(max(listP)) != yTest[i]:\n",
    "            missClass += 1\n",
    "    missClass = float(missClass)/len(p)\n",
    "\n",
    "    missClassError.append(missClass)\n",
    "\n",
    "    #capture best predictions\n",
    "    if missClass < missClassBest:\n",
    "        missClassBest = missClass\n",
    "        pBest = p\n",
    "\n",
    "idxBest = missClassError.index(min(missClassError))\n",
    "\n",
    "#print best values\n",
    "print(\"Best Missclassification Error\" )\n",
    "print(missClassBest)\n",
    "print(\"Number of Trees for Best Missclassification Error\")\n",
    "print(idxBest)\n",
    "\n",
    "#plot training deviance and test auc's vs number of trees in ensemble\n",
    "missClassError = [100*mce for mce in missClassError]\n",
    "plot.figure()\n",
    "plot.plot(range(1, nEst + 1), glassGBMModel.train_score_, label='Training Set Deviance', linestyle=\":\")\n",
    "plot.plot(range(1, nEst + 1), missClassError, label='Test Set Error')\n",
    "plot.legend(loc='upper right')\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Deviance / Classification Error')\n",
    "plot.show()\n",
    "\n",
    "# Plot feature importance\n",
    "featureImportance = glassGBMModel.feature_importances_\n",
    "\n",
    "# normalize by max importance\n",
    "featureImportance = featureImportance / featureImportance.max()\n",
    "\n",
    "#plot variable importance\n",
    "idxSorted = numpy.argsort(featureImportance)\n",
    "barPos = numpy.arange(idxSorted.shape[0]) + .5\n",
    "plot.barh(barPos, featureImportance[idxSorted], align='center')\n",
    "plot.yticks(barPos, glassNames[idxSorted])\n",
    "plot.xlabel('Variable Importance')\n",
    "plot.show()\n",
    "\n",
    "#generate confusion matrix for best prediction.\n",
    "pBestList = pBest.tolist()\n",
    "bestPrediction = [r.index(max(r)) for r in pBestList]\n",
    "confusionMat = confusion_matrix(yTest, bestPrediction)\n",
    "print('')\n",
    "print(\"Confusion Matrix\")\n",
    "print(confusionMat)\n",
    "\n",
    "\n",
    "# Printed Output:\n",
    "#\n",
    "# nEst = 500\n",
    "# depth = 3\n",
    "# learnRate = 0.003\n",
    "# maxFeatures = None\n",
    "# subSamp = 0.5\n",
    "#\n",
    "#\n",
    "# Best Missclassification Error\n",
    "# 0.242424242424\n",
    "# Number of Trees for Best Missclassification Error\n",
    "# 113\n",
    "#\n",
    "# Confusion Matrix\n",
    "# [[19  1  0  0  0  1]\n",
    "#  [ 3 19  0  1  0  0]\n",
    "#  [ 4  1  0  0  1  0]\n",
    "#  [ 0  3  0  1  0  0]\n",
    "#  [ 0  0  0  0  3  0]\n",
    "#  [ 0  1  0  1  0  7]]\n",
    "#\n",
    "\n",
    "\n",
    "\n",
    "# For gradient boosting using random forest base learners\n",
    "# nEst = 500\n",
    "# depth = 3\n",
    "# learnRate = 0.003\n",
    "# maxFeatures = 3\n",
    "# subSamp = 0.5\n",
    "#\n",
    "#\n",
    "#\n",
    "# Best Missclassification Error\n",
    "# 0.227272727273\n",
    "# Number of Trees for Best Missclassification Error\n",
    "# 267\n",
    "#\n",
    "# Confusion Matrix\n",
    "# [[20  1  0  0  0  0]\n",
    "#  [ 3 20  0  0  0  0]\n",
    "#  [ 3  3  0  0  0  0]\n",
    "#  [ 0  4  0  0  0  0]\n",
    "#  [ 0  0  0  0  3  0]\n",
    "#  [ 0  2  0  0  0  7]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### glassRF.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Missclassification Error\n",
      "0.2272727272727273\n",
      "\n",
      "Confusion Matrix\n",
      "[[17  2  1  0  0  1]\n",
      " [ 2 18  1  2  0  0]\n",
      " [ 3  0  3  0  0  0]\n",
      " [ 0  0  0  4  0  0]\n",
      " [ 0  1  0  0  2  0]\n",
      " [ 0  2  0  0  0  7]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0776162978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEKCAYAAAAGvn7fAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAFBJJREFUeJzt3X+0ZWV93/H3h0EHCGGMzNSSEbhJ\nC1pkUoSxFZMoSIKGapAuloWYFruoE22XadrFypqlXSk1XbYmIWk1WjMxLMVaQU0ixCH+zkQxYrzA\nyAWD+IMxOBqRYMcfKIHh2z/OvvV6vTP3/NjnHnjm/Vrrrtlnn332/j5z73zmuc/e+9mpKiRJ7Ths\n1gVIkvplsEtSYwx2SWqMwS5JjTHYJakxBrskNcZgl6TGGOyS1BiDXZIac/gsDrpx48aam5ubxaEl\n6VHrpptuureqNq223UyCfW5ujvn5+VkcWpIetZJ8cZjtHIqRpMYY7JLUGINdkhpjsEtSYwx2SWqM\nwS5JjTHYJakxBrskNWYmNygt7N3H3Padszi0JM3Mnv/+z9bkOPbYJakxBrskNcZgl6TGGOyS1BiD\nXZIas2qwJ6kkb13y+vAkX0vynumWJkkaxzA99m8DpyY5snv9s8De6ZUkSZrEsEMxfwosXoB5MfD2\nxTeSbErygSQ3J/m9JF9MsrHvQiVJwxk22K8GLkpyBPATwCeWvPefgQ9X1enAHwMnrLSDJNuSzCeZ\n33//vklqliQdxFDBXlW3AnMMeuvXL3v7pxgEP1X1XuDrB9jHjqraWlVb1x21YeyCJUkHN8qUAtcB\nvwWcBRy7ZH36LEiSNJlRLne8EnhVVS0sW38D8EKAJOcCP9JTbZKkMQwd7FX1par6nyu89V+Ac5Pc\nDPwc8BXgmz3VJ0ka0apDMVV19ArrdgG7upf7gOdU1UNJzgTOrqoH+ixSkjS8PqbtPQF4R5LDgL8D\nXtLDPiVJY5o42Kvqs8BTe6hFktQD54qRpMbM5AlKWzZvYH6NniQiSYcae+yS1BiDXZIaY7BLUmMM\ndklqzExOni7s3cfc9p2zOLQkTcWeR9AFIfbYJakxBrskNcZgl6TGGOyS1JiJgj3JBUkqyZO713NJ\nbuunNEnSOCbtsV/M4EEbF/VQiySpB2MHe5KjgZ8ELsVgl6RHjEl67C8A3ltVdwL3JTm9p5okSROY\nJNgvBq7ulq/uXh9Qkm1J5pPM779/3wSHlSQdzFh3niY5Fng2cGqSAtYBBbzhQJ+pqh3ADoD1x51U\n4xxXkrS6cXvsFwJXVdWJVTVXVccDdwFP7K80SdI4xg32i4E/XrbuD4FXTFaOJGlSYw3FVNVZK6x7\nLfDaSQuSJE3GO08lqTEGuyQ1xmCXpMYY7JLUmJk8QWnL5g3MP4KeNiJJLbHHLkmNMdglqTEGuyQ1\nZiZj7At79zG3fecsDi1pDe3xXNpM2GOXpMYY7JLUGINdkhpjsEtSY0YK9iR/P8nVST6f5NNJrk9y\n8rSKkySNbuhgTxIGc7Dvqqp/UFWnMJh//QnTKk6SNLpReuxnAw9W1RsXV1TVbuCWJB9KcnOShSTn\n916lJGloo1zHfipw0wrrvwtcUFXfSLIRuDHJdVXlc00laQb6uEEpwKuTPBN4GNjMYHjmb75vo2Qb\nsA1g3TGbejisJGklowzF3A6cscL6FwGbgDOq6jTgq8ARyzeqqh1VtbWqtq47asNYxUqSVjdKsH8Y\nWJ/kJYsrkjwNOBG4p6oeTHJ291qSNCNDB3s3Zn4B8LPd5Y63A5cD1wNbk8wz6L3fMY1CJUnDGWmM\nvaq+DLxwhbfO7KccSdKkvPNUkhpjsEtSYwx2SWqMwS5JjZnJE5S2bN7AvE9WkaSpsMcuSY0x2CWp\nMQa7JDXGYJekxszk5OnC3n3Mbd85i0NL6skeL4B4xLLHLkmNMdglqTEGuyQ1xmCXpMaMFexJ9ifZ\nneS2JH+S5HHd+rkkt/VboiRpFOP22L9TVadV1anAfcC/67EmSdIE+hiK+TiDB1hLkh4BJgr2JOuA\nc4Dr+ilHkjSpcYP9yCS7gb8FHg98YLUPJNmWZD7J/P779415WEnSaiYaYwdOBB7LEGPsVbWjqrZW\n1dZ1R20Y87CSpNVMNBRTVfuAXwYuS/KYfkqSJE1i4pOnVXUL8CngosnLkSRNaqxJwKrq6GWvn7/k\n5akTVSRJmoh3nkpSYwx2SWqMwS5JjTHYJakxM3mC0pbNG5j36SuSNBX22CWpMQa7JDXGYJekxsxk\njH1h7z7mtu+cxaEldfZ4nqtZ9tglqTEGuyQ1xmCXpMYY7JLUmKGDPUkluWLJ68uSXD6VqiRJYxul\nx/4A8M+TbJxWMZKkyY0S7A8BO4D/sPyNJM9P8okktyT5YJIn9FahJGkko46xvx54UZLlDy29AXh6\nVT0VuBr41T6KkySNbqQblKrqG0muYvCc0+8seeuJwDVJjmPwcOu7ln82yTZgG8C6YzaNXbAk6eDG\nuSrmfwCXAj+0ZN3rgN+tqi3ALwFHLP9QVe2oqq1VtXXdUcs7/JKkvowc7FV1H/AOBuG+aAOwt1u+\npIe6JEljGvc69iuApVfHXA68M8lHgXsnLUqSNL6hx9ir6ugly18Fjlry+lrg2n5LkySNwztPJakx\nBrskNcZgl6TGGOyS1JiZPEFpy+YNzPv0FkmaCnvsktQYg12SGmOwS1JjDHZJasxMTp4u7N3H3Pad\nszi0dEjb40ULhwR77JLUGINdkhpjsEtSYwx2SWrM0MGeZH+S3Uk+leTmJM+YZmGSpPGMclXMd6rq\nNIAkzwH+G/CsqVQlSRrbuEMxxwBfB0hydJIPdb34hSTn91eeJGlUo/TYj0yym8GDqo8Dnt2t/y5w\nQVV9I8lG4MYk11VV9VyrJGkI4w7FnAlcleRUIMCrkzwTeBjYDDwB+JulH06yDdgGsO6YTT2ULkla\nyVh3nlbVx7ve+SbgvO7PM6rqwSR7GPTql39mB7ADYP1xJ9mbl6QpGWuMPcmTgXXA3wIbgHu6UD8b\nOLHH+iRJIxpnjB0Gwy+XVNX+JG8D/iTJPLAbuKPvIiVJwxs62Ktq3QHW3wuc2VtFkqSJeOepJDXG\nYJekxhjsktQYg12SGjOTJyht2byBeZ/kIklTYY9dkhpjsEtSYwx2SWrMTMbYF/buY277zlkcWoeo\nPZ7T0SHEHrskNcZgl6TGGOyS1BiDXZIaM1GwJ3llktuT3Jpkd5J/muRNSU7pq0BJ0mjGviqmezze\n84DTq+qB7olKj62qf9NbdZKkkU3SYz8OuLeqHoDBvOxV9eUku5Js7ac8SdKoJgn29wPHJ7kzyRuS\nPKuvoiRJ4xs72KvqW8AZwDbga8A1SV58oO2TbEsyn2R+//37xj2sJGkVE915WlX7gV3AriQLwCUH\n2XYHsANg/XEn1STHlSQd2Ng99iRPSnLSklWnAV+cvCRJ0iQm6bEfDbwuyeOAh4DPMRiWeVcfhUmS\nxjN2sFfVTcAzVnjrrLGrkSRNzDtPJakxBrskNcZgl6TGGOyS1JiZPEFpy+YNzPtEG0maCnvsktQY\ng12SGmOwS1JjZjLGvrB3H3Pbd87i0DoE7fF8jg4x9tglqTEGuyQ1xmCXpMYY7JLUGINdkhrTS7An\n+daS5fOSfDbJCX3sW5I0ml4vd0xyDvA64Nyq+us+9y1JGk5vwZ7kp4HfB86rqs/3tV9J0mj6Cvb1\nwLXAWVV1x0obJNnG4NF5rDtmU0+HlSQt19fJ0weBvwAuPdAGVbWjqrZW1dZ1R23o6bCSpOX6CvaH\ngRcCT0vyip72KUkaQ29j7FV1f5LnAR9N8tWq+oO+9i1JGl6vV8VU1X1Jngt8JMm9VXVtn/uXJK2u\nl2CvqqOXLN8N/Fgf+5Ukjc47TyWpMQa7JDXGYJekxszkCUpbNm9g3qfaSNJU2GOXpMYY7JLUGINd\nkhpjsEtSY2Zy8nRh7z7mtu+cxaEPGXs8OS0dsuyxS1JjDHZJaozBLkmNMdglqTEjnTxNsh9YWLLq\nBVW1p9eKJEkTGfWqmO9U1WlTqUSS1IuJh2KSrEvym0k+meTWJL/UR2GSpPGM2mM/MsnubvmuqrqA\nwQOs91XV05KsBz6W5P1VdVevlUqShtLHUMy5wE8kubB7vQE4Cfi+YE+yDdgGsO6YTWOUKkkaRh93\nngZ4eVW972AbVdUOYAfA+uNOqh6OK0laQR+XO74PeFmSxwAkOTnJD/WwX0nSGProsb8JmANuThLg\na8ALetivJGkMIwV7VR29wrqHgVd0X5KkGfPOU0lqjMEuSY0x2CWpMQa7JDVmJk9Q2rJ5A/M+4UeS\npsIeuyQ1xmCXpMYY7JLUGINdkhpjsEtSYwx2SWqMwS5JjTHYJakxBrskNSZVa/8woyTfBD6z5gd+\n5NgI3DvrImbI9h+67T+U2w6Tt//Eqlr12aIzmVIA+ExVbZ3RsWcuybztt/2zrmMWDuW2w9q136EY\nSWqMwS5JjZlVsO+Y0XEfKWz/oe1Qbv+h3HZYo/bP5OSpJGl6HIqRpMZMNdiTPDfJZ5J8Lsn2Fd5f\nn+Sa7v1PJJmbZj1rbYj2/8ckn05ya5IPJTlxFnVOw2ptX7LdhUkqSVNXSgzT/iQv7L7/tyf5P2td\n4zQN8bN/QpI/S3JL9/N/3izqnIYkVya5J8ltB3g/SV7b/d3cmuT03ouoqql8AeuAzwM/DjwW+BRw\nyrJt/i3wxm75IuCaadWz1l9Dtv9s4Khu+WWttH+Ytnfb/TDwEeBGYOus617j7/1JwC3Aj3Sv/96s\n617j9u8AXtYtnwLsmXXdPbb/mcDpwG0HeP884E+BAE8HPtF3DdPssf8T4HNV9YWq+jvgauD8Zduc\nD7ylW34XcE6STLGmtbRq+6vqz6rq/u7ljcAT17jGaRnmew/w68BvAN9dy+LWwDDtfwnw+qr6OkBV\n3bPGNU7TMO0v4JhueQPw5TWsb6qq6iPAfQfZ5Hzgqhq4EXhckuP6rGGawb4ZuHvJ6y9161bcpqoe\nAvYBx06xprU0TPuXupTB/+ItWLXtSZ4KHF9V71nLwtbIMN/7k4GTk3wsyY1Jnrtm1U3fMO2/HPjF\nJF8CrgdevjalPSKMmg0jm+adpyv1vJdfgjPMNo9WQ7ctyS8CW4FnTbWitXPQtic5DPgd4MVrVdAa\nG+Z7fziD4ZizGPym9tEkp1bV/51ybWthmPZfDLy5qq5Icibw1q79D0+/vJmbeu5Ns8f+JeD4Ja+f\nyA/+uvX/t0lyOINfyQ72K8yjyTDtJ8nPAK8Efr6qHlij2qZttbb/MHAqsCvJHgbjjNc1dAJ12J/9\na6vqwaq6i8HcSSetUX3TNkz7LwXeAVBVHweOYDCPyqFgqGyYxDSD/ZPASUl+LMljGZwcvW7ZNtcB\nl3TLFwIfru7sQgNWbX83HPF7DEK9pTHWg7a9qvZV1caqmquqOQbnF36+quZnU27vhvnZfzeDk+ck\n2chgaOYLa1rl9AzT/r8GzgFI8o8YBPvX1rTK2bkO+Ffd1TFPB/ZV1Vd6PcKUzw6fB9zJ4Az5K7t1\nr2LwjxgG38x3Ap8D/hL48Vmf0V7j9n8Q+Cqwu/u6btY1r1Xbl227i4auihnyex/gt4FPAwvARbOu\neY3bfwrwMQZXzOwGzp11zT22/e3AV4AHGfTOLwVeCrx0yff+9d3fzcI0fva981SSGuOdp5LUGINd\nkhpjsEtSYwx2SWqMwS5JjTHY1Ysku5I8Z9m6X0nyhhH3c32Sx62yzbcOsP7NSS4c4ViXJ7lslPom\nleTFSX50LY+pQ4/Brr68ncGNKEtd1K1fVXezxmFVdV61cVv9D0iyjsE0Cga7pspgV1/eBTwvyXqA\nbm79HwVuSHJ0N9/8zUkWkpy/uE2Sv+p69TcDxyfZ092JSZJ3J7mpm69829KDJbmi29+HkmxaXkyS\nM5L8eff59602e173G8fvJPlIV9PTkvxRks8m+a9L6r0jyVu6ebTfleSo7r1zurnFF7r5uBf/HvYk\n+bUkNzCYH2Ur8LYku5Mc2b33ySS3JdmxOLtpV89rkvxlkjuT/HS3fl2S3+qOc2uSl4/TXjVu1ndp\n+dXOF7ATOL9b3g78Zrd8OHBMt7yRwZ3GAeaAh4GnL9nHHmBjt/z47s8jgduAY7vXBbyoW/414He7\n5TczmJriMcBfAJu69f8CuHKFei8HLuuWdwGv6Zb/PYO5O44D1jO4e/DYrt4CfrLb7krgMgZ3UN8N\nnNytvwr4lSXt+dUlx9zFkjsNF9vYLb8VeP6S7a7ols8DPtgtvwz4Q+Dwxc8P216/Dp0ve+zq09Lh\nmKXDMAFeneRWBtMobAae0L33xRrMSb2SX07yKQZzyRzP9ybJehi4plv+38BPLfvckxhMMvaBJLuB\n/8Rwc90vzmeyANxeVV+pwcRsX+B7kzbdXVUfW3bsJwF3VdWd3fq3MHjYwqJrOLCzM3h62ALwbOAp\nS977o+7Pmxj8pwLwMwweTvMQQFXdN0F71ahpTturQ8+7gd/O4FFfR1bVzd36FwGbgDOq6sFuRscj\nuve+vdKOkpzFIMTOrKr7k+xa8pnlVpoO+vaqOnPE+hdn13x4yfLi68V/K8uPVaw8DetSB2rjEcAb\nGPTg705yOd/fxsUa9i85flaoYdz2qlH22NWbqvoWgyGEK/n+k6YbgHu6UD8bGObZrhuAr3eh/mQG\nU/suOozBkAvALwA3LPvsZ4BNGczzTZLHJHkK/Thhcb8MxsxvAO4A5pL8w279vwT+/ACf/yaDaYvh\neyF+b5Kj+V6bDub9wEszmOaaJI9nuu3Vo5DBrr69HfjHDB6HtuhtwNYk8wx673cMsZ/3Aod3wze/\nzmA4ZtG3gackuYnB8MWrln6wBo9juxB4TTeUsxt4xnjN+QF/BVzS1fV44H9V1XeBfw28sxtSeRh4\n4wE+/2bgjd2QyQPA7zMY+nk3g+luV/MmBlPe3tq17Rem3F49Cjm7ozSk7kqf91TVqTMuRTooe+yS\n1Bh77JLUGHvsktQYg12SGmOwS1JjDHZJaozBLkmNMdglqTH/D4fw4TIrqCitAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0772ab4f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "__author__ = 'mike_bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "from math import sqrt, fabs, exp\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn.linear_model import enet_path\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix, roc_curve\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn import ensemble\n",
    "import numpy\n",
    "\n",
    "target_url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/glass/glass.data\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "#arrange data into list for labels and list of lists for attributes\n",
    "xList = []\n",
    "for line in data:\n",
    "    #split on comma\n",
    "    row = line.decode().strip().split(\",\")\n",
    "    xList.append(row)\n",
    "\n",
    "glassNames = numpy.array(['RI', 'Na', 'Mg', 'Al', 'Si', 'K', 'Ca', 'Ba', 'Fe', 'Type'])\n",
    "\n",
    "#Separate attributes and labels\n",
    "xNum = []\n",
    "labels = []\n",
    "\n",
    "for row in xList:\n",
    "    labels.append(row.pop())\n",
    "    l = len(row)\n",
    "    #eliminate ID\n",
    "    attrRow = [float(row[i]) for i in range(1, l)]\n",
    "    xNum.append(attrRow)\n",
    "\n",
    "#number of rows and columns in x matrix\n",
    "nrows = len(xNum)\n",
    "ncols = len(xNum[1])\n",
    "\n",
    "#Labels are integers from 1 to 7 with no examples of 4.\n",
    "#gb requires consecutive integers starting at 0\n",
    "newLabels = []\n",
    "labelSet = set(labels)\n",
    "labelList = list(labelSet)\n",
    "labelList.sort()\n",
    "nlabels = len(labelList)\n",
    "for l in labels:\n",
    "    index = labelList.index(l)\n",
    "    newLabels.append(index)\n",
    "\n",
    "#Class populations:\n",
    "#old label     new label     num of examples\n",
    "#1              0               70\n",
    "#2              1               76\n",
    "#3              2               17\n",
    "#5              3               13\n",
    "#6              4               9\n",
    "#7              5               29\n",
    "#\n",
    "#Drawing 30% test sample may not preserve population proportions\n",
    "\n",
    "#stratified sampling by labels.\n",
    "xTemp = [xNum[i] for i in range(nrows) if newLabels[i] == 0]\n",
    "yTemp = [newLabels[i] for i in range(nrows) if newLabels[i] == 0]\n",
    "xTrain, xTest, yTrain, yTest = train_test_split(xTemp, yTemp, test_size=0.30, random_state=531)\n",
    "for iLabel in range(1, len(labelList)):\n",
    "    #segregate x and y according to labels\n",
    "    xTemp = [xNum[i] for i in range(nrows) if newLabels[i] == iLabel]\n",
    "    yTemp = [newLabels[i] for i in range(nrows) if newLabels[i] == iLabel]\n",
    "\n",
    "    #form train and test sets on segregated subset of examples\n",
    "    xTrainTemp, xTestTemp, yTrainTemp, yTestTemp = train_test_split(xTemp, yTemp, test_size=0.30, random_state=531)\n",
    "\n",
    "    #accumulate\n",
    "    xTrain = numpy.append(xTrain, xTrainTemp, axis=0); xTest = numpy.append(xTest, xTestTemp, axis=0)\n",
    "    yTrain = numpy.append(yTrain, yTrainTemp, axis=0); yTest = numpy.append(yTest, yTestTemp, axis=0)\n",
    "    \n",
    "missCLassError = []\n",
    "nTreeList = range(50, 2000, 50)\n",
    "for iTrees in nTreeList:\n",
    "    depth = None\n",
    "    maxFeat  = 4 #try tweaking\n",
    "    glassRFModel = ensemble.RandomForestClassifier(n_estimators=iTrees, max_depth=depth, max_features=maxFeat,\n",
    "                                                 oob_score=False, random_state=531)\n",
    "\n",
    "    glassRFModel.fit(xTrain,yTrain)\n",
    "\n",
    "    #Accumulate auc on test set\n",
    "    prediction = glassRFModel.predict(xTest)\n",
    "    correct = accuracy_score(yTest, prediction)\n",
    "\n",
    "    missCLassError.append(1.0 - correct)\n",
    "\n",
    "print(\"Missclassification Error\" )\n",
    "print(missCLassError[-1])\n",
    "\n",
    "#generate confusion matrix\n",
    "pList = prediction.tolist()\n",
    "confusionMat = confusion_matrix(yTest, pList)\n",
    "print('')\n",
    "print(\"Confusion Matrix\")\n",
    "print(confusionMat)\n",
    "\n",
    "\n",
    "\n",
    "#plot training and test errors vs number of trees in ensemble\n",
    "plot.plot(nTreeList, missCLassError)\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Missclassification Error Rate')\n",
    "#plot.ylim([0.0, 1.1*max(mseOob)])\n",
    "plot.show()\n",
    "\n",
    "# Plot feature importance\n",
    "featureImportance = glassRFModel.feature_importances_\n",
    "\n",
    "# normalize by max importance\n",
    "featureImportance = featureImportance / featureImportance.max()\n",
    "\n",
    "#plot variable importance\n",
    "idxSorted = numpy.argsort(featureImportance)\n",
    "barPos = numpy.arange(idxSorted.shape[0]) + .5\n",
    "plot.barh(barPos, featureImportance[idxSorted], align='center')\n",
    "plot.yticks(barPos, glassNames[idxSorted])\n",
    "plot.xlabel('Variable Importance')\n",
    "plot.show()\n",
    "\n",
    "\n",
    "# Printed Output:\n",
    "# Missclassification Error\n",
    "# 0.227272727273\n",
    "#\n",
    "# Confusion Matrix\n",
    "# [[17  1  2  0  0  1]\n",
    "#  [ 2 18  1  2  0  0]\n",
    "#  [ 3  0  3  0  0  0]\n",
    "#  [ 0  0  0  4  0  0]\n",
    "#  [ 0  1  0  0  2  0]\n",
    "#  [ 0  2  0  0  0  7]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### rankCorr.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f077632c4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Matrix of Rank Correlations - Full List of Rankings\n",
      "SpearmanrResult(correlation=array([[1.        , 0.70714087, 0.35576549, 0.29702695],\n",
      "       [0.70714087, 1.        , 0.22022784, 0.12975827],\n",
      "       [0.35576549, 0.22022784, 1.        , 0.72258961],\n",
      "       [0.29702695, 0.12975827, 0.72258961, 1.        ]]), pvalue=array([[0.00000000e+00, 2.69647726e-10, 5.27601232e-03, 2.11866474e-02],\n",
      "       [2.69647726e-10, 0.00000000e+00, 9.08709853e-02, 3.23081427e-01],\n",
      "       [5.27601232e-03, 9.08709853e-02, 0.00000000e+00, 7.12684318e-11],\n",
      "       [2.11866474e-02, 3.23081427e-01, 7.12684318e-11, 0.00000000e+00]]))\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike_bowles'\n",
    "import numpy\n",
    "from scipy.stats import spearmanr\n",
    "import random\n",
    "import pylab as plot\n",
    "\n",
    "enetModelEntry = [10, 48, 11, 44, 35, 51, 20, 3, 21, 45, 43, 15, 0, 22, 27, 50, 53, 30, 58, 56, 28, 39, 46, 19, 54, 29, 57, 6, 8, 7, 49, 2, 23, 37, 55, 4, 13, 36, 38, 26, 31, 1, 34, 33, 24, 16, 17, 5, 52, 41, 40, 59, 12, 9, 18, 14, 47, 42]\n",
    "\n",
    "enetCoefSize = [48, 30, 11, 29, 35, 3, 15, 2, 8, 44, 49, 22, 10, 54, 0, 36, 51, 37, 7, 56, 39, 58, 57, 53, 43, 19, 46, 6, 45, 20, 23, 38, 55, 31, 13, 26, 4, 21, 1]\n",
    "\n",
    "gbmVarImp = [20, 10, 11, 51, 42, 48, 47, 35, 16, 8, 50, 5, 4, 15, 19, 0, 41, 46, 26, 39, 30, 36, 3, 29, 6, 22, 18, 44, 25, 27, 43, 45, 38, 31, 53, 23, 21, 37, 34, 59, 40, 9, 1, 17, 54, 33, 7, 58, 52, 57, 28, 12, 14, 13, 32, 24, 55, 2, 56, 49]\n",
    "\n",
    "rfVarImp = [10, 11, 8, 9, 20, 51, 19, 42, 48, 47, 0, 35, 12, 16, 3, 4, 45, 46, 44, 15, 36, 27, 50, 22, 43, 26, 5, 21, 53, 34, 38, 41, 59, 14, 18, 55, 7, 1, 17, 52, 25, 39, 6, 57, 23, 13, 33, 30, 49, 2, 32, 31, 28, 58, 54, 40, 37, 29, 24, 56]\n",
    "\n",
    "\n",
    "#find missing values and add to end of list\n",
    "missing = [i for i in range(60) if i not in enetModelEntry]\n",
    "enetModelEntry = enetModelEntry + missing\n",
    "\n",
    "missing = [i for i in range(60) if i not in enetCoefSize]\n",
    "enetCoefSize = enetCoefSize + missing\n",
    "\n",
    "modelEntry = numpy.argsort(enetModelEntry)\n",
    "coefSize = numpy.argsort(enetCoefSize)\n",
    "gbmImp = numpy.argsort(gbmVarImp)\n",
    "rfImp = numpy.argsort(rfVarImp)\n",
    "\n",
    "#plot the rankings for each attributes using each of these methods\n",
    "plot.figure()\n",
    "xAxisPts = range(60)\n",
    "plot.plot(xAxisPts, modelEntry, label='Model Entry', linestyle=\":\")\n",
    "plot.plot(xAxisPts, coefSize, label='Coef Size', linestyle=\"--\")\n",
    "plot.plot(xAxisPts, gbmImp, label='GBM Var Imp', linestyle=\"-\")\n",
    "plot.plot(xAxisPts, rfImp, label='RF Var Imp', linestyle=\"-.\")\n",
    "\n",
    "plot.legend(loc='upper right')\n",
    "plot.xlabel('Attribute Index')\n",
    "plot.ylabel('Importance Ranking')\n",
    "plot.show()\n",
    "\n",
    "#stack the ranking vectors into a matrix and calculate the spearman rank correlations between methods\n",
    "rankMat = numpy.column_stack((modelEntry, coefSize, gbmImp, rfImp))\n",
    "\n",
    "corrMat = spearmanr(rankMat, axis=0)\n",
    "\n",
    "print(\"Matrix of Rank Correlations - Full List of Rankings\")\n",
    "print(corrMat)\n",
    "\n",
    "# Printed Output:\n",
    "#\n",
    "# Matrix of Rank Correlations - Full List of Rankings\n",
    "# (array([[ 1.        ,  0.70714087,  0.35576549,  0.29702695],\n",
    "#        [ 0.70714087,  1.        ,  0.22022784,  0.12975827],\n",
    "#        [ 0.35576549,  0.22022784,  1.        ,  0.72258961],\n",
    "#        [ 0.29702695,  0.12975827,  0.72258961,  1.        ]]),\n",
    "#\n",
    "#  array([[  0.00000000e+00,   2.69647726e-10,   5.27601232e-03, 2.11866474e-02],\n",
    "#        [  2.69647726e-10,   0.00000000e+00,   9.08709853e-02, 3.23081427e-01],\n",
    "#        [  5.27601232e-03,   9.08709853e-02,   0.00000000e+00, 7.12684318e-11],\n",
    "#        [  2.11866474e-02,   3.23081427e-01,   7.12684318e-11, 0.00000000e+00]]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### rocksVMinesGBM.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best AUC\n",
      "0.9533468559837729\n",
      "Number of Trees for Best AUC\n",
      "1037\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f07710a9588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nUNQgvcz/JYAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f07710276a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0770f57cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Confusion Matrices for Different Threshold Values\n",
      "\n",
      "Threshold Value =    1.678409422418272\n",
      "TP =  0.4444444444444444 FP =  0.031746031746031744\n",
      "FN =  0.09523809523809523 TN =  0.42857142857142855\n",
      "\n",
      "Threshold Value =    1.3265146567806227\n",
      "TP =  0.47619047619047616 FP =  0.06349206349206349\n",
      "FN =  0.06349206349206349 TN =  0.3968253968253968\n",
      "\n",
      "Threshold Value =    0.6800319785640546\n",
      "TP =  0.5079365079365079 FP =  0.12698412698412698\n",
      "FN =  0.031746031746031744 TN =  0.3333333333333333\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike_bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "from math import sqrt, fabs, exp\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn import ensemble\n",
    "from sklearn.metrics import roc_auc_score, roc_curve\n",
    "import numpy\n",
    "\n",
    "#read data from uci data repository\n",
    "target_url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "\n",
    "#arrange data into list for labels and list of lists for attributes\n",
    "xList = []\n",
    "\n",
    "\n",
    "for line in data:\n",
    "    #split on comma\n",
    "    row = line.decode().strip().split(\",\")\n",
    "    xList.append(row)\n",
    "\n",
    "#separate labels from attributes, convert from attributes from string to numeric and convert \"M\" to 1 and \"R\" to 0\n",
    "\n",
    "xNum = []\n",
    "labels = []\n",
    "\n",
    "for row in xList:\n",
    "    lastCol = row.pop()\n",
    "    if lastCol == \"M\":\n",
    "        labels.append(1)\n",
    "    else:\n",
    "        labels.append(0)\n",
    "    attrRow = [float(elt) for elt in row]\n",
    "    xNum.append(attrRow)\n",
    "\n",
    "#number of rows and columns in x matrix\n",
    "nrows = len(xNum)\n",
    "ncols = len(xNum[1])\n",
    "\n",
    "#form x and y into numpy arrays and make up column names\n",
    "X = numpy.array(xNum)\n",
    "y = numpy.array(labels)\n",
    "rockVMinesNames = numpy.array(['V' + str(i) for i in range(ncols)])\n",
    "\n",
    "#break into training and test sets.\n",
    "xTrain, xTest, yTrain, yTest = train_test_split(X, y, test_size=0.30, random_state=531)\n",
    "\n",
    "#instantiate model\n",
    "nEst = 2000\n",
    "depth = 3\n",
    "learnRate = 0.007\n",
    "maxFeatures = 20\n",
    "rockVMinesGBMModel = ensemble.GradientBoostingClassifier(n_estimators=nEst, max_depth=depth,\n",
    "                                                         learning_rate=learnRate,\n",
    "                                                         max_features=maxFeatures)\n",
    "#train\n",
    "rockVMinesGBMModel.fit(xTrain, yTrain)\n",
    "\n",
    "# compute auc on test set as function of ensemble size\n",
    "auc = []\n",
    "aucBest = 0.0\n",
    "predictions = rockVMinesGBMModel.staged_decision_function(xTest)\n",
    "for p in predictions:\n",
    "    aucCalc = roc_auc_score(yTest, p)\n",
    "    auc.append(aucCalc)\n",
    "\n",
    "    #capture best predictions\n",
    "    if aucCalc > aucBest:\n",
    "        aucBest = aucCalc\n",
    "        pBest = p\n",
    "\n",
    "idxBest = auc.index(max(auc))\n",
    "\n",
    "#print best values\n",
    "print(\"Best AUC\" )\n",
    "print(auc[idxBest])\n",
    "print(\"Number of Trees for Best AUC\")\n",
    "print(idxBest)\n",
    "\n",
    "#plot training deviance and test auc's vs number of trees in ensemble\n",
    "plot.figure()\n",
    "plot.plot(range(1, nEst + 1), rockVMinesGBMModel.train_score_, label='Training Set Deviance', linestyle=\":\")\n",
    "plot.plot(range(1, nEst + 1), auc, label='Test Set AUC')\n",
    "plot.legend(loc='upper right')\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Deviance / AUC')\n",
    "plot.show()\n",
    "\n",
    "# Plot feature importance\n",
    "featureImportance = rockVMinesGBMModel.feature_importances_\n",
    "\n",
    "# normalize by max importance\n",
    "featureImportance = featureImportance / featureImportance.max()\n",
    "\n",
    "#plot importance of top 30\n",
    "idxSorted = numpy.argsort(featureImportance)[30:60]\n",
    "\n",
    "barPos = numpy.arange(idxSorted.shape[0]) + .5\n",
    "plot.barh(barPos, featureImportance[idxSorted], align='center')\n",
    "plot.yticks(barPos, rockVMinesNames[idxSorted])\n",
    "plot.xlabel('Variable Importance')\n",
    "plot.show()\n",
    "\n",
    "#pick some threshold values and calc confusion matrix for best predictions\n",
    "#notice that GBM predictions don't fall in range of (0, 1)\n",
    "\n",
    "#plot best version of ROC curve\n",
    "fpr, tpr, thresh = roc_curve(yTest, list(pBest))\n",
    "ctClass = [i*0.01 for i in range(101)]\n",
    "\n",
    "plot.plot(fpr, tpr, linewidth=2)\n",
    "plot.plot(ctClass, ctClass, linestyle=':')\n",
    "plot.xlabel('False Positive Rate')\n",
    "plot.ylabel('True Positive Rate')\n",
    "plot.show()\n",
    "\n",
    "#pick some threshold values and calc confusion matrix for best predictions\n",
    "#notice that GBM predictions don't fall in range of (0, 1)\n",
    "#pick threshold values at 25th, 50th and 75th percentiles\n",
    "idx25 = int(len(thresh) * 0.25)\n",
    "idx50 = int(len(thresh) * 0.50)\n",
    "idx75 = int(len(thresh) * 0.75)\n",
    "\n",
    "#calculate total points, total positives and total negatives\n",
    "totalPts = len(yTest)\n",
    "P = sum(yTest)\n",
    "N = totalPts - P\n",
    "\n",
    "print('')\n",
    "print('Confusion Matrices for Different Threshold Values')\n",
    "\n",
    "#25th\n",
    "TP = tpr[idx25] * P; FN = P - TP; FP = fpr[idx25] * N; TN = N - FP\n",
    "print('')\n",
    "print('Threshold Value =   ', thresh[idx25])\n",
    "print('TP = ', TP/totalPts, 'FP = ', FP/totalPts)\n",
    "print('FN = ', FN/totalPts, 'TN = ', TN/totalPts)\n",
    "\n",
    "#50th\n",
    "TP = tpr[idx50] * P; FN = P - TP; FP = fpr[idx50] * N; TN = N - FP\n",
    "print('')\n",
    "print('Threshold Value =   ', thresh[idx50])\n",
    "print('TP = ', TP/totalPts, 'FP = ', FP/totalPts)\n",
    "print('FN = ', FN/totalPts, 'TN = ', TN/totalPts)\n",
    "\n",
    "#75th\n",
    "TP = tpr[idx75] * P; FN = P - TP; FP = fpr[idx75] * N; TN = N - FP\n",
    "print('')\n",
    "print('Threshold Value =   ', thresh[idx75])\n",
    "print('TP = ', TP/totalPts, 'FP = ', FP/totalPts)\n",
    "print('FN = ', FN/totalPts, 'TN = ', TN/totalPts)\n",
    "\n",
    "\n",
    "# Printed Output:\n",
    "#\n",
    "# Best AUC\n",
    "# 0.936105476673\n",
    "# Number of Trees for Best AUC\n",
    "# 1989\n",
    "#\n",
    "# Confusion Matrices for Different Threshold Values\n",
    "#\n",
    "# ('Threshold Value =   ', 6.2941249291909935)\n",
    "# ('TP = ', 0.23809523809523808, 'FP = ', 0.015873015873015872)\n",
    "# ('FN = ', 0.30158730158730157, 'TN = ', 0.44444444444444442)\n",
    "#\n",
    "# ('Threshold Value =   ', 2.2710265370949441)\n",
    "# ('TP = ', 0.44444444444444442, 'FP = ', 0.063492063492063489)\n",
    "# ('FN = ', 0.095238095238095233, 'TN = ', 0.3968253968253968)\n",
    "#\n",
    "# ('Threshold Value =   ', -3.0947902666953317)\n",
    "# ('TP = ', 0.53968253968253965, 'FP = ', 0.22222222222222221)\n",
    "# ('FN = ', 0.0, 'TN = ', 0.23809523809523808)\n",
    "#\n",
    "#\n",
    "# Printed Output with max_features = 20 (Random Forest base learners):\n",
    "#\n",
    "# Best AUC\n",
    "# 0.956389452333\n",
    "# Number of Trees for Best AUC\n",
    "# 1426\n",
    "#\n",
    "# Confusion Matrices for Different Threshold Values\n",
    "#\n",
    "# ('Threshold Value =   ', 5.8332200248698536)\n",
    "# ('TP = ', 0.23809523809523808, 'FP = ', 0.015873015873015872)\n",
    "# ('FN = ', 0.30158730158730157, 'TN = ', 0.44444444444444442)\n",
    "#\n",
    "# ('Threshold Value =   ', 2.0281780133610567)\n",
    "# ('TP = ', 0.47619047619047616, 'FP = ', 0.031746031746031744)\n",
    "# ('FN = ', 0.063492063492063489, 'TN = ', 0.42857142857142855)\n",
    "#\n",
    "# ('Threshold Value =   ', -1.2965629080181333)\n",
    "# ('TP = ', 0.53968253968253965, 'FP = ', 0.22222222222222221)\n",
    "# ('FN = ', 0.0, 'TN = ', 0.23809523809523808)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### rocksVMinesRF.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC\n",
      "0.9457403651115619\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0770f10780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[10 11  8 20  9 51 48 19 42 47  0 12 35 46  3 16 44  4 45 36 27 26 15 43\n",
      " 50  5 22 18 38 41 34 17 21 14 25  1 53  7  6 13 39 23 52 30 54 31 24 33\n",
      " 32  2 28 37 49 29 57 58 40 59 55 56]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0770f70048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n1VQURESk2v8DcFSX9JYDDBMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0771214978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Confusion Matrices for Different Threshold Values\n",
      "\n",
      "Threshold Value =    0.6369230769230769\n",
      "TP =  0.42857142857142855 FP =  0.015873015873015872\n",
      "FN =  0.1111111111111111 TN =  0.4444444444444444\n",
      "\n",
      "Threshold Value =    0.6251282051282051\n",
      "TP =  0.4444444444444444 FP =  0.06349206349206349\n",
      "FN =  0.09523809523809523 TN =  0.3968253968253968\n",
      "\n",
      "Threshold Value =    0.5574358974358974\n",
      "TP =  0.5079365079365079 FP =  0.14285714285714285\n",
      "FN =  0.031746031746031744 TN =  0.31746031746031744\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike_bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "from math import sqrt, fabs, exp\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn import ensemble\n",
    "from sklearn.metrics import roc_auc_score, roc_curve\n",
    "import numpy\n",
    "\n",
    "#read data from uci data repository\n",
    "target_url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "#arrange data into list for labels and list of lists for attributes\n",
    "xList = []\n",
    "\n",
    "for line in data:\n",
    "    #split on comma\n",
    "    row = line.decode().strip().split(\",\")\n",
    "    xList.append(row)\n",
    "\n",
    "#separate labels from attributes, convert from attributes from string to numeric and convert \"M\" to 1 and \"R\" to 0\n",
    "\n",
    "xNum = []\n",
    "labels = []\n",
    "\n",
    "for row in xList:\n",
    "    lastCol = row.pop()\n",
    "    if lastCol == \"M\":\n",
    "        labels.append(1)\n",
    "    else:\n",
    "        labels.append(0)\n",
    "    attrRow = [float(elt) for elt in row]\n",
    "    xNum.append(attrRow)\n",
    "\n",
    "#number of rows and columns in x matrix\n",
    "nrows = len(xNum)\n",
    "ncols = len(xNum[1])\n",
    "\n",
    "#form x and y into numpy arrays and make up column names\n",
    "X = numpy.array(xNum)\n",
    "y = numpy.array(labels)\n",
    "rocksVMinesNames = numpy.array(['V' + str(i) for i in range(ncols)])\n",
    "\n",
    "#break into training and test sets.\n",
    "xTrain, xTest, yTrain, yTest = train_test_split(X, y, test_size=0.30, random_state=531)\n",
    "\n",
    "auc = []\n",
    "nTreeList = range(50, 2000, 50)\n",
    "for iTrees in nTreeList:\n",
    "    depth = None\n",
    "    maxFeat  = 8 #try tweaking\n",
    "    rocksVMinesRFModel = ensemble.RandomForestClassifier(n_estimators=iTrees, max_depth=depth, max_features=maxFeat,\n",
    "                                                 oob_score=False, random_state=531)\n",
    "\n",
    "    rocksVMinesRFModel.fit(xTrain,yTrain)\n",
    "\n",
    "    #Accumulate auc on test set\n",
    "    prediction = rocksVMinesRFModel.predict_proba(xTest)\n",
    "    aucCalc = roc_auc_score(yTest, prediction[:,1:2])\n",
    "    auc.append(aucCalc)\n",
    "\n",
    "print(\"AUC\" )\n",
    "print(auc[-1])\n",
    "\n",
    "\n",
    "#plot training and test errors vs number of trees in ensemble\n",
    "plot.plot(nTreeList, auc)\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Area Under ROC Curve - AUC')\n",
    "#plot.ylim([0.0, 1.1*max(mseOob)])\n",
    "plot.show()\n",
    "\n",
    "# Plot feature importance\n",
    "featureImportance = rocksVMinesRFModel.feature_importances_\n",
    "\n",
    "# normalize by max importance\n",
    "featureImportance = featureImportance / featureImportance.max()\n",
    "\n",
    "#plot importance of top 30\n",
    "idxSorted = numpy.argsort(featureImportance)[30:60]\n",
    "idxTemp = numpy.argsort(featureImportance)[::-1]\n",
    "print(idxTemp)\n",
    "barPos = numpy.arange(idxSorted.shape[0]) + .5\n",
    "plot.barh(barPos, featureImportance[idxSorted], align='center')\n",
    "plot.yticks(barPos, rocksVMinesNames[idxSorted])\n",
    "plot.xlabel('Variable Importance')\n",
    "plot.show()\n",
    "\n",
    "#plot best version of ROC curve\n",
    "fpr, tpr, thresh = roc_curve(yTest, list(prediction[:,1:2]))\n",
    "ctClass = [i*0.01 for i in range(101)]\n",
    "\n",
    "plot.plot(fpr, tpr, linewidth=2)\n",
    "plot.plot(ctClass, ctClass, linestyle=':')\n",
    "plot.xlabel('False Positive Rate')\n",
    "plot.ylabel('True Positive Rate')\n",
    "plot.show()\n",
    "\n",
    "#pick some threshold values and calc confusion matrix for best predictions\n",
    "#notice that GBM predictions don't fall in range of (0, 1)\n",
    "#pick threshold values at 25th, 50th and 75th percentiles\n",
    "idx25 = int(len(thresh) * 0.25)\n",
    "idx50 = int(len(thresh) * 0.50)\n",
    "idx75 = int(len(thresh) * 0.75)\n",
    "\n",
    "#calculate total points, total positives and total negatives\n",
    "totalPts = len(yTest)\n",
    "P = sum(yTest)\n",
    "N = totalPts - P\n",
    "\n",
    "print('')\n",
    "print('Confusion Matrices for Different Threshold Values')\n",
    "\n",
    "#25th\n",
    "TP = tpr[idx25] * P; FN = P - TP; FP = fpr[idx25] * N; TN = N - FP\n",
    "print('')\n",
    "print('Threshold Value =   ', thresh[idx25])\n",
    "print('TP = ', TP/totalPts, 'FP = ', FP/totalPts)\n",
    "print('FN = ', FN/totalPts, 'TN = ', TN/totalPts)\n",
    "\n",
    "#50th\n",
    "TP = tpr[idx50] * P; FN = P - TP; FP = fpr[idx50] * N; TN = N - FP\n",
    "print('')\n",
    "print('Threshold Value =   ', thresh[idx50])\n",
    "print('TP = ', TP/totalPts, 'FP = ', FP/totalPts)\n",
    "print('FN = ', FN/totalPts, 'TN = ', TN/totalPts)\n",
    "\n",
    "#75th\n",
    "TP = tpr[idx75] * P; FN = P - TP; FP = fpr[idx75] * N; TN = N - FP\n",
    "print('')\n",
    "print('Threshold Value =   ', thresh[idx75])\n",
    "print('TP = ', TP/totalPts, 'FP = ', FP/totalPts)\n",
    "print('FN = ', FN/totalPts, 'TN = ', TN/totalPts)\n",
    "\n",
    "\n",
    "# Printed Output:\n",
    "#\n",
    "# AUC\n",
    "# 0.950304259635\n",
    "#\n",
    "# Confusion Matrices for Different Threshold Values\n",
    "#\n",
    "# ('Threshold Value =   ', 0.76051282051282054)\n",
    "# ('TP = ', 0.25396825396825395, 'FP = ', 0.0)\n",
    "# ('FN = ', 0.2857142857142857, 'TN = ', 0.46031746031746029)\n",
    "#\n",
    "# ('Threshold Value =   ', 0.62461538461538457)\n",
    "# ('TP = ', 0.46031746031746029, 'FP = ', 0.047619047619047616)\n",
    "# ('FN = ', 0.079365079365079361, 'TN = ', 0.41269841269841268)\n",
    "#\n",
    "# ('Threshold Value =   ', 0.46564102564102566)\n",
    "# ('TP = ', 0.53968253968253965, 'FP = ', 0.22222222222222221)\n",
    "# ('FN = ', 0.0, 'TN = ', 0.23809523809523808)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### wineBagging.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XucXHV9//HXe2bv2c0mIRdyIQQw\ngKgIEqh3wHqhlYI/lZ8g3qW01gjW6q/601LEX3+tt2qttBZRixdAVGqppkC9Yr1AEkAgIBK5ZSEh\n92yyt9mZ+fSPc3aYLHuZXXZ2ktn38/HYx8455ztnPmfP7Pmc7/ec8/0qIjAzMwPI1DoAMzM7cDgp\nmJlZiZOCmZmVOCmYmVmJk4KZmZU4KZiZWYmTgpmZlTgpmJlZiZOCmZmVNNQ6gImaP39+rFixYsLv\n275vgM17+jlu8WyyGU19YGZmB7D169dvj4gF45U76JLCihUrWLdu3YTf9727Hmf11XdwzXtfwrGH\nzq5CZGZmBy5Jj1RSbsY0Hy3ubAVg8+7+GkdiZnbgmjFJYcmcFgA273FSMDMbzYxJCgvam8kINu/p\nq3UoZmYHrBmTFBqyGRbNbuFxNx+ZmY1qxiQFgMWdLa4pmJmNYYYlhVa2+JqCmdmoZlhSaOHxPX14\ntDkzs5HNrKQwp5X+wSK7ewdrHYqZ2QFpZiWFTt+WamY2lhmaFHyx2cxsJDMqKSyZkzzV/LhrCmZm\nI6pqUpB0hqT7JW2U9MERlr9N0jZJd6Y/F1QznvntzTRkxObdrimYmY2kah3iScoClwOvALqAtZJu\niIh7hxX9ZkSsrlYc5bIZsWh2i29LNTMbRTVrCqcAGyPiwYjIAdcCZ1fx8yoydFuqmZk9VTWTwlJg\nU9l0VzpvuNdJukvStyUdVsV4gOS2VN99ZGY2smomhZFGshn+1Nh/ACsi4njgB8BVI65IulDSOknr\ntm3b9rSCSrq66PcDbGZmI6hmUugCys/8lwGPlxeIiB0RMZBOfhE4aaQVRcQVEbEqIlYtWDDuwEFj\nWtzZQi5fZGdP7mmtx8ysHlUzKawFVko6QlITcC5wQ3kBSYvLJs8C7qtiPEDZYDtuQjIze4qqJYWI\nyAOrgZtIDvbXRcQGSZdJOistdpGkDZJ+DVwEvK1a8QwZeoDtcd+Wamb2FFUdozki1gBrhs27pOz1\n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\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f07b463cbe0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minimum MSE\n",
      "0.39778025634233677\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "import numpy\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from math import floor\n",
    "import random\n",
    "\n",
    "\n",
    "# Read wine quality data from UCI website\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "names = []\n",
    "firstLine = True\n",
    "for line in data:\n",
    "    if firstLine:\n",
    "        names = line.decode().strip().split(\";\")\n",
    "        firstLine = False\n",
    "    else:\n",
    "        #split on semi-colon\n",
    "        row = line.decode().strip().split(\";\")\n",
    "        #put labels in separate array\n",
    "        labels.append(float(row[-1]))\n",
    "        #remove label from row\n",
    "        row.pop()\n",
    "        #convert row to floats\n",
    "        floatRow = [float(num) for num in row]\n",
    "        xList.append(floatRow)\n",
    "\n",
    "nrows = len(xList)\n",
    "ncols = len(xList[0])\n",
    "\n",
    "\n",
    "#take fixed test set 30% of sample\n",
    "nSample = int(nrows * 0.30)\n",
    "idxTest = random.sample(range(nrows), nSample)\n",
    "idxTest.sort()\n",
    "idxTrain = [idx for idx in range(nrows) if not(idx in idxTest)]\n",
    "\n",
    "#Define test and training attribute and label sets\n",
    "xTrain = [xList[r] for r in idxTrain]\n",
    "xTest = [xList[r] for r in idxTest]\n",
    "yTrain = [labels[r] for r in idxTrain]\n",
    "yTest = [labels[r] for r in idxTest]\n",
    "\n",
    "#train a series of models on random subsets of the training data\n",
    "#collect the models in a list and check error of composite as list grows\n",
    "\n",
    "#maximum number of models to generate\n",
    "numTreesMax = 100\n",
    "\n",
    "#tree depth - typically at the high end\n",
    "treeDepth = 5\n",
    "\n",
    "#initialize a list to hold models\n",
    "modelList = []\n",
    "predList = []\n",
    "\n",
    "#number of samples to draw for stochastic bagging\n",
    "bagFract = 0.5\n",
    "nBagSamples = int(len(xTrain) * bagFract)\n",
    "\n",
    "for iTrees in range(numTreesMax):\n",
    "    idxBag = []\n",
    "    for i in range(nBagSamples):\n",
    "        idxBag.append(random.choice(range(len(xTrain))))\n",
    "    xTrainBag = [xTrain[i] for i in idxBag]\n",
    "    yTrainBag = [yTrain[i] for i in idxBag]\n",
    "\n",
    "    modelList.append(DecisionTreeRegressor(max_depth=treeDepth))\n",
    "    modelList[-1].fit(xTrainBag, yTrainBag)\n",
    "\n",
    "    #make prediction with latest model and add to list of predictions\n",
    "    latestPrediction = modelList[-1].predict(xTest)\n",
    "    predList.append(list(latestPrediction))\n",
    "\n",
    "\n",
    "#build cumulative prediction from first \"n\" models\n",
    "mse = []\n",
    "allPredictions = []\n",
    "for iModels in range(len(modelList)):\n",
    "\n",
    "    #average first \"iModels\" of the predictions\n",
    "    prediction = []\n",
    "    for iPred in range(len(xTest)):\n",
    "        prediction.append(sum([predList[i][iPred] for i in range(iModels + 1)])/(iModels + 1))\n",
    "\n",
    "    allPredictions.append(prediction)\n",
    "    errors = [(yTest[i] - prediction[i]) for i in range(len(yTest))]\n",
    "    mse.append(sum([e * e for e in errors]) / len(yTest))\n",
    "\n",
    "nModels = [i + 1 for i in range(len(modelList))]\n",
    "\n",
    "plot.plot(nModels,mse)\n",
    "plot.axis('tight')\n",
    "plot.xlabel('Number of Models in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.ylim((0.0, max(mse)))\n",
    "plot.show()\n",
    "\n",
    "print('Minimum MSE')\n",
    "print(min(mse))\n",
    "\n",
    "\n",
    "#With treeDepth = 5\n",
    "#     bagFract = 0.5\n",
    "#Minimum MSE\n",
    "#0.429310223079\n",
    "\n",
    "#With treeDepth = 8\n",
    "#     bagFract = 0.5\n",
    "#Minimum MSE\n",
    "#0.395838627928\n",
    "\n",
    "#With treeDepth = 10\n",
    "#     bagFract = 1.0\n",
    "#Minimum MSE\n",
    "#0.313120547589"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### wineGBM.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE\n",
      "0.31979472576975626\n",
      "1046\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xl4VOXZ+PHvPZOVJGxJkH0HBVlC\njIBb3VDAfa2iVWtVXmzd6q99X1qtC9q6VWtt6auWIrZVcUdcEKUqvpWqBIzsyCJCZF/Dkm0y9++P\nc2aYJJNkEjIzWe7Pdc2Vc555zjn3nCTnnvOcc55HVBVjjDEGwBPvAIwxxjQdlhSMMcYEWVIwxhgT\nZEnBGGNMkCUFY4wxQZYUjDHGBFlSMMYYE2RJwRhjTJAlBWOMMUEJ8Q6gvrKysrR3797xDsMYY5qV\nRYsW7VTV7LrqNbuk0Lt3b/Lz8+MdhjHGNCsi8l0k9az5yBhjTJAlBWOMMUGWFIwxxgQ1u2sKxpgj\nU15eTmFhISUlJfEOxURBSkoK3bt3JzExsUHLW1IwppUpLCwkIyOD3r17IyLxDsc0IlVl165dFBYW\n0qdPnwatw5qPjGllSkpKyMzMtITQAokImZmZR3QWaEnBmFbIEkLLdaS/29aTFL77D8y7D2z4UWOM\nqVHrSQpbCuDff4DiPfGOxJhWbdeuXeTk5JCTk0Pnzp3p1q1bcL6srCyidVx//fWsXr261jpTp07l\nhRdeaIyQeeutt8jJyWH48OEMHjyYadOm1Vr/o48+4vPPPw/73rRp0xAR5s+fHyx79dVXERFmzZpV\n6/buvvvuSvsrJyeH/fv3N8pnDGg9F5ozujg/izZDm47xjcWYViwzM5OCggIA7rvvPtLT0/nFL35R\nqY6qoqp4POG/tz733HN1budnP/vZkQcLlJaWcvPNN5Ofn0/Xrl0pLS3lu+9qfzj4o48+Iisri9Gj\nR4d9f+jQobz00kuceuqpAMycOZPhw4dHtL1f/vKX3HHHHY3y2cJpNWcK6iaFz79eGudIjDHhrF27\nliFDhjBp0iRyc3PZsmULEydOJC8vj2OPPZYpU6YE65588skUFBTg8/lo3749kydPZvjw4Zxwwgls\n374dcL5VP/nkk8H6kydPZuTIkRx99NEsWLAAgIMHD3LppZcyfPhwJkyYQF5eXjBhBezbtw9VpWNH\n58tkcnIyAwcOBGDbtm1ccskl5OXlMXLkSD7//HPWrVvHtGnTeOyxx8jJyQluK9Rpp53GggUL8Pl8\nFBUVsXHjRoYMGVLn9mKh1ZwpVKR3IQGY9Wk+o8dOiHc4xjQJ97+9nBWbixp1nYO7tuXe849t0LIr\nVqzgueee4+mnnwbg4YcfpmPHjvh8Pk4//XQuu+wyBg8eXGmZffv2ceqpp/Lwww9z5513Mn36dCZP\nnlxt3arKl19+yezZs5kyZQrvv/8+f/rTn+jcuTOvv/46X3/9Nbm5udWW69SpE2PHjqVXr16ceeaZ\nnH/++VxxxRV4PB5uu+02/vu//5vRo0ezYcMGzjvvPJYtW8aNN95IVlZWjd/oPR4Pp512GvPmzWPb\ntm1cdNFFrFy5ss7tATz22GPMmDEDgKysLObNm9egfV2TVnOm4GvTCb8KXWR3vEMxxtSgX79+HH/8\n8cH5l156idzcXHJzc1m5ciUrVqyotkxqairjx48H4LjjjmPDhg1h133JJZdUq/Pvf/+bK6+8EoDh\nw4dz7LHhk9mMGTP48MMPycvL4+GHH2bixIkAzJs3j0mTJpGTk8NFF13Enj17KC4ujuizXnnllcyc\nOZOZM2cGY6hre+A0HxUUFFBQUNDoCQFa0ZlCGV720Y7OWFIwJqCh3+ijJS0tLTi9Zs0a/vjHP/Ll\nl1/Svn17fvSjH4W9/z4pKSk47fV68fl8YdednJxcrY7W427EYcOGMWzYMK666ioGDRrEtGnTgmcf\noTFE6oQTTmDSpElkZGTQr1+/iLYXC63nTKFC2aod6WxnCsY0C0VFRWRkZNC2bVu2bNnC3LlzG30b\nJ598Mq+88goAS5cuDXsmUlRUxKeffhqcLygooFevXgCMGTOGqVOnVnoPICMjo867gkSEhx56iN/9\n7ncRby8WWs2Zgq/Cz1btSG/ZGu9QjDERyM3NZfDgwQwZMoS+ffty0kknNfo2br31Vq699lqGDRtG\nbm4uQ4YMoV27dpXqqCoPPfQQN910E6mpqaSnpzN9+nTAue315ptv5rnnngte95g6dSoXXnghl19+\nOW+88QZTp07lxBNPDLv9c889t1pZbduDytcUAN5++2169OjRCHvDIfU5fWoK8vLytCGD7KzYXET+\nX37CBd4FtL9/cxQiM6Z5WLlyJYMGDYp3GE2Cz+fD5/ORkpLCmjVrOPvss1mzZg0JCc37+3K437GI\nLFLVvLqWbd6fvB7+MO8bBmgH2stBKC+GxNR4h2SMibMDBw5w5pln4vP5UFWeeeaZZp8QjlSr+fQ9\nOrRhOx2cmf1boGPf+AZkjIm79u3bs2jRoniH0aS0mgvNWRlJbFXnYRD/Pms+MsaYcKKaFERknIis\nFpG1IlL9aRKnzg9FZIWILBeRF6MVy1Uje7JNnTOFiiJLCsYYE07Umo9ExAtMBc4CCoGFIjJbVVeE\n1BkA/Ao4SVX3iEinaMXTvs3hMwXf7kIaNiaRMca0bNE8UxgJrFXV9apaBswELqxS5yZgqqruAVDV\n7VGMh/20Yb+msnL1ymhuxhhjmq1oJoVuwKaQ+UK3LNRAYKCIfCYin4vIuHArEpGJIpIvIvk7duw4\noqA2ayZppduOaB3GmIZrjK6zAaZPn87WreGfO/rss88YNWoUOTk5DBo0iAceeKDWdS1evJj3338/\n7Hvz5s1DRHj++eeDZQsXLkREgh3u1bS9adOmkZ2dXamr67q6/I63aN59FG74n6oPRSQAA4DTgO7A\n/4nIEFXdW2kh1WeBZ8F5TqGhAbVLTWSzL5PBZZYUjImXSLrOjsT06dPJzc2lc+fO1d677rrrmDVr\nFkOGDKGioqLOA/HixYtZtmwZ48aF/V7K0KFDmTlzJtdddx1QuavrurZ39dVXB5NHcxDNM4VCIPQx\nu+5A1Su8hcBbqlquqt8Cq3GSRFT8/vLhbNFMOpRbUjCmKXr++ecZOXIkOTk5/PSnP8Xv9+Pz+bjm\nmmsYOnQoQ4YM4amnnuLll1+moKCAK664IuwZxo4dO4LJwuv1BntWPXDgAD/+8Y8ZOXIkI0aM4O23\n36a4uJgpU6bwwgsvkJOTw2uvvVYtrr59+1JUVMTOnTtRVT788EPGjh1b5/aao2ieKSwEBohIH+B7\n4Ergqip1ZgETgBkikoXTnLQ+WgF1bptCgWaRVLbHHmAzBmDOZNjayGOMdB4K4x+u92LLli3jzTff\nZMGCBSQkJDBx4kRmzpxJv3792LlzJ0uXOnHu3buX9u3b86c//Yk///nP5OTkVFvXHXfcwYABAzj9\n9NMZP3481157LcnJyUyZMoVx48YxY8YM9uzZw6hRo1iyZAn33HMPy5Ytq/Ub/aWXXsprr73GoEGD\nGDVqFImJiXVuD+CFF17gk08+CdZtaAd6sRK1MwVV9QG3AHOBlcArqrpcRKaIyAVutbnALhFZAXwM\n/FJVd0UrJo/HuaYAwL7vo7UZY0wDzJs3j4ULF5KXl0dOTg7z589n3bp19O/fn9WrV3P77bczd+7c\nan0ThXP//fezcOFCxowZw9///vdgH0MffPABv/3tb8nJyeH000+npKSEjRs3RhTfFVdcwSuvvMJL\nL73EhAmVx2SpaXvgNB8FurouKCho0gkBovxEs6q+B7xXpeyekGkF7nRfUef1CFtwk0JRIWT1j8Vm\njWm6GvCNPlpUlZ/85CdhLwovWbKEOXPm8NRTT/H666/z7LPP1rm+/v37079/f2666SYyMzODI5rN\nmjWrWlfVob2S1qRbt26oKvPnz+cvf/kLH330UZ3ba45azRPNAB4Rvg+eKRTGNxhjTCVjxozhlVde\nYefOnYBzl9LGjRvZsWMHqsrll1/O/fffz+LFi4Hau6d+9913g2MlfPPNNyQnJ5ORkcHYsWN56qmn\ngvW++uqrOtcV6oEHHuCRRx6pNnZ0TdtrjlpN30fgJIVt2hG/Cuzd1LoyojFN3NChQ7n33nsZM2YM\nfr+fxMREnn76abxeLzfccAOqiojwyCOPAHD99ddz4403kpqaWq2dfsaMGfz85z+nTZs2JCYm8uKL\nL+LxeLj33nu54447GDp0KH6/n/79+/PWW29xxhln8NhjjzFixAjuuusuLrvssrAxnnzyyWHLa9oe\nVL+m8MwzzzBq1KhG2muNr9V0nQ2wfscBznh8Pl8k/5TyPmfS/cfT617ImBbGus5u+Y6k6+xW9WXZ\n63EenSjUbFIOWPORMcZU1aqSgkecpPCdHkWbQ5vqqG2MMa1P60oK7pnCJu1E6qGt4Iv8kXpjWpLm\n1mxsInekv9tWlRQqKpydtdHfCcEP++xswbQ+KSkp7Nq1yxJDC6Sq7Nq1i5SUlAavo1XdfVRW4Qdg\no7o9dO/5FjL71bKEMS1P9+7dKSws5Eg7lzRNU0pKCt27d2/w8q0qKXRu52TPw0lhQ/yCMSZOEhMT\n6dOnT7zDME1Uq2o+Sk92cuB22lOqCbA3ssfbjTGmtWhVSSFA8fC9ZsGe7+IdijHGNCmtMimA86yC\nnSkYY0xlrTgpZMFeO1MwxphQrTYpbNSj4NAuKGmePRkaY0w0tLqkcP1JvQFYp12dgp1r4xeMMcY0\nMa0uKYzs3RE4nBS+Xb04nuEYY0yT0uqSQuAZzo3aiXL1smHVV3GNxxhjmpJWlxQCfCSwQTvTqdTu\nQDLGmIBWlxRCu3tZrd3pXLIufsEYY0wT0/qSAoezwnJ/HzLLNkPxnjhGZIwxTUfrSwohZwpL1e3/\nZcuS+ARjjDFNTFSTgoiME5HVIrJWRCaHef/HIrJDRArc143RjKeqZf7ezsSWglhu1hhjmqyo9ZIq\nIl5gKnAWUAgsFJHZqrqiStWXVfWWaMVRVWgP8nvJYG9SZ9pv+TpWmzfGmCYtmmcKI4G1qrpeVcuA\nmcCFUdxeg2xJPRo225mCMcZAdJNCNyB0aLNCt6yqS0VkiYi8JiI9ohgPAGOPParS/Ja0gbB7HZQU\nRXvTxhjT5EUzKUiYsqrj/70N9FbVYcA84PmwKxKZKCL5IpJ/pKNFJSd4K81/n3K0M7HVLjYbY0w0\nk0IhEPrNvzuwObSCqu5S1VJ39q/AceFWpKrPqmqequZlZ2cfcWA3n3Z4CM7C1IHOhF1XMMaYqCaF\nhcAAEekjIknAlcDs0Aoi0iVk9gJgZRTjCTp78OEmpIU7EiCjq11XMMYYonj3kar6ROQWYC7gBaar\n6nIRmQLkq+ps4DYRuQDwAbuBH0crnpos3riXsmOHkmRnCsYYU3tScG8rnauqYxqyclV9D3ivStk9\nIdO/An7VkHU3puKsoSSt+wBKD0ByerzDMcaYuKm1+UhVK4BDItIuRvHERJ+stErzZdlDAYWtS+MT\nkDHGNBGRNB+VAEtF5EPgYKBQVW+LWlRR1r5NEn2z01i/w/k4ZUcNd974fhH0OiGOkRljTHxFcqH5\nXeA3wKfAopBXs3bdCb2D0/60o6B9T9j0RfwCMsaYJqDOMwVVfd69e8i9d5PVqloe3bCi74xjOnHv\n7OUAiAA9RsO3850e8yTcIxbGGNPy1XmmICKnAWtw+jH6C/CNiPwgynFFXehxX0Sgx0g4sA322qA7\nxpjWK5JrCo8DZ6vqagARGQi8RA0PmjUXEpIVVBV6jHJmNn0BHXrFKSpjjImvSK4pJAYSAoCqfgMk\nRi+k2AhtIFIFjjoWktvCdwviFZIxxsRdJEkhX0T+JiKnua+/0gIuNIc2H907ezn7y/xOE9LG/8Qv\nKGOMibNIksLNwHLgNuB2YAUwKZpBxYKEnCt8tGo7T/1rDfQ6CXasgqItcYzMGGPip9ak4D7R/DdV\nfUJVL1HVi1X1DyGd2DVbVW8wKvP5YeA4Z+ab92MfkDHGNAGRPNGc7d6S2qJUvenUr0CnQc7zCmvn\nxSMkY4yJu0juPtoAfCYis6n8RPMT0QoqJqpkBX/g+YQeo2H9J+CvAI837KLGGNNSRXJNYTPwjls3\nI+TVrEmVrOAPDP9zzDlwcDt8+2nsgzLGmDiLpJfUdFX9ZYziiZnqDy27WWHgOEhMgxVvQb/TYx2W\nMcbEVSTXFHJjFEtMVc0JGjhTSEyFgWNh5dtOE5IxxrQikTQfFYjIbBG5RkQuCbyiHlmUSZVThTnL\nth6eGXwhHNoJ330W46iMMSa+IrnQ3BHYBZwRUqbAG1GJKEaqninsKw7p42/AWc7TzYv/AX2afTdP\nxhgTsUh6Sb0+FoHEWq0doSalwbEXwbI3oLzYaVIyxphWoMbmIxF5JWT6kSrvfRDNoGKh6t1H1Qy5\nFMoOwKp3YxOQMcY0AbVdUxgQMn1WlfeyoxBL09L7B86DbIufj3ckxhgTM7UlBW3ge82Cuh+hXerh\nDl8fmrPycAWPB3Kvc55X2Los1uEZY0xc1JYU2ojICBE5Dkh1p3MD8zGKL2oCD6t5QlqRnpm/Hl+F\n/3DB8TdAUjp89mRsgzPGmDipLSlsAZ4Afg9sdacfD5mvk4iME5HVIrJWRCbXUu8yEVERyYs89CPj\ndx9M8HoqX1uYsWDD4ZnUDpBzFayYDcV7YhWaMcbETY1JQVVPr+1V14rdp6GnAuOBwcAEERkcpl4G\nTrfcXzT8Y9RfZloSE3/QlxduHF2pvNKtqQAjroGKUlhk1xaMMS1fJA+vNdRIYK2qrlfVMmAmcGGY\neg8AjwIlUYylGhHh1+cM4ujOlbtx8lS9V7XLMOdZhS+eBl9ZDCM0xpjYi2ZS6AZsCpkvdMuCRGQE\n0ENV36ltRSIyUUTyRSR/x44djR7oI5cODU4neMLcqnri7bB/C3z1j0bftjHGNCXRTArhHgQI3rUk\nIh7gD8D/q2tFqvqsquapal52duPfDduzY1pw2usNE3b/M6H3KfCv++HQ7kbfvjHGNBW1PbyWW9sr\ngnUXAj1C5rvjdMMdkAEMAT4RkQ3AaGB2LC82BySGJAJvuEedRWD8o1C6H+Y/GsPIjDEmtmrr5uJx\n92cKkAd8jfPtfxjOReGT61j3QmCAiPQBvgeuBK4KvKmq+4CswLyIfAL8QlXz6/cRjlyC93BuPFhW\nwZ6DZXRIqzLY3FGDnYvOC/8KoyZCx74xjtIYY6KvzruPgO+AXLf55jhgBLC2rhWrqg+4BZgLrARe\nUdXlIjJFRC5onPAbR+h1hKf+tYYRD3wYvuLpvwZvEnz0YIwiM8aY2Iqkl9RjVHVpYEZVl4lITiQr\nV9X3gPeqlN1TQ93TIllnNCR6I7y0ktEZTrgFPn0UBl3gdJpnjDEtSCRHw5UiMk1EThORU0Xkrzjf\n/FuM5IR6XG8/9b+hay6883PYH9EzfMYY02xEcjS8HlgO3A7cAaxwy1qM7h3q0WuHNxEufgbKD8Hb\nd4QM2WaMMc1fnUlBVUuAp4HJqnqxqv7BLWsxEiJtPgrIHghn3gPfzIFFz0UnKGOMiYM6j4buReEC\n4H13PkdEZkc7sCZv1M3Oswvv/NzGXDDGtBiRfEW+F6fLir0AqloA9I5iTHHx1IQR9VvA44GrX4XO\nw2DWzbC9RV1mMca0UpEkBZ/7TEGLNrRbu/ovlJgKV/wTElJgxnmw8u3GD8wYY2IokqSwTESuArwi\nMkBE/gQsiHJcMdc7s02leY30AnKHXnDdO9C2K7z8I5h5tXWFYYxptiJJCrcCxwKlwIvAPpy7kFoU\nqdK9xdLv63FylD0QbvrIvfj8PjyVA/nP2Z1Jxphmp9ak4I6JcL+q3qWqx7uvu1va3UcBF+V0DU7v\nPFBav4W9iXDK/4Mb50GX4fDOHfDCZbDv+0aO0hhjoqfWpKCqFcBxMYol7kK/1/9kRgO7YOo6Aq6Z\nBeMege8WwF9OgIKX7KzBGNMsRNLNxVfuLaivAgcDhar6RtSiipOk+j6vUBOPF0ZPggFnwVs/g1mT\nYNU7cNLt0P14p9dVY4xpgiJJCh2BXcAZIWUKtLikcNe5gygur+CdJVsaZ4WZ/eDH78Jnf4RPf+8k\nhnY94JjzYNjlTncZliCMMU2IRHyXTRORl5en+fnR611736Fyhk/5AIAND5/beCsu3Q/L34TVc2Dt\nPKgoc7rfHnQBHD3eub01sz8kpdW9LmOMqScRWaSqdY5XU+eZgoikADfg3IGUEihX1Z8cUYRNVGqS\nNzi980ApWenJjbPi5AzIvdZ5Fe91nmlY8jJ89qTzAhCP07yUfTSkdoSuOc5T02lZta/bGGMaSSTN\nR/8AVgFjgSnA1bSwXlJDJYX0mHrDjIW8dUtdYwk1QGp7yL3GeR3cCd8vgrKDsG05fDsfVr0HJXvB\n73PqZ/YHb7KzXJtM55XZ37nLKaOL83R1WjYkpVtzlDHmiESSFPqr6uUicqGqPi8iL+IMnNPifV0Y\ngwe507Jg4FhnesglwG+c6QofbCmAtf+CrUucu5dK9sHOb+DAdigO84BcQqqzvrRsJ1mIOIMCpR91\nuDwtG9I7OU9he5OgfU9ITKm+LmNMqxRJUih3f+4VkSHAVlpg30ehJo8/hofnrIpvEN4E6J7nvMI5\nsB22LIFDu0ArnPmDO5z5ou9h9zoQL/hKnPfK9odfjycBMrpC2y7OU9ltuzlnHG06OvPpR0GHPs41\nD62ApAznzMSYxqIK/grnzFjdn/4KUL97K7cerudM1DHvlgWWVXXWq+qsM7huv1vuTvvdn9XWWXVd\n/jBlYeqhIZ+hhrjDvhfu87i6jnBuYImiSJLCsyLSAecr7GwgHQg7elpL4W8OF9/TO8GAMZHXLy9x\nkkbg5SuFsgPOmUfRZue1ZQmsfh98xTWvR7xOM5aEJAbxONdMPAnO+2mZTnJJae+UB/7423SExDZO\n01h5iZOwfKXO9nylzvJJaU4CSkh1zmC8SU45OLf6epOd7Xm8zs/QV6AscBAIHGhK9zsvj9fZfrjl\nvEnuvLifTcLMy+Gzr0D95LbOg4vBg01FlZ8apqzCPQDVUe4rOXzAqih3D5r+w/X8PmffBQ5yUP3A\nGOD3Ofu8orTygTF4gAyJIXCQDt2HgQNc2Lhr+IyKu4yvciy4TZyBBBA8EJs6nftE/JOCqk5zJ+cD\nrWK0+tLyFvhHmpgC7Xs4r9oEvgkd2g1FhVC0xTnrUL9zECzeC8V7qHbAKd3vHkAq4MBW2PCZU69s\n/+EEUvWf35sUcvBPBn85lB1yDnQVZY368VushFQ3GXuCx9qQicPXmMTrJFtvUkhC9TpnfeINSape\n56fHC5LorDtQHzk8HVo3uLynSlkgsXoOJ9jQb8aBLxGeBPflOTwdWE/VzxH4bHXNB8tCYgh+bjkc\nc7UvGBJ+nZXWJRGUUfnLRK1x17S9Kp8HID2baIvk7qOaxlSe0vjhNA2lPn/IdAXJCd5aarcwgX+Y\n9Gzn1bWeXYrXRNVJEuXFkNrBuaZRWzOUv8KpW1HmTIOTfCrKqn+bDTYFuN98A5/B4x5wktIhpe3h\ndYbWD3zrriit0jTgr9IsEJivcL61V5Q7ZSX7nJiCB8kqB8YGlbsHqoQU9yxJnObEwMGy6gHOmEYU\nSfPRwZDpFOA8WvDdR+AkgoCH3lvFfRccG8doWggRp/koUh4vJKc3fhyp7Rt/nca0IJEMx/l4yOu3\nwGlAt0hWLiLjRGS1iKwVkclh3p8kIktFpEBE/i0ig+v9CaIg9ExhxoINvLG4MI7RGGNM7DTkNpI2\nRHBtwe1hdSowHhgMTAhz0H9RVYeqag7wKPBEA+JpdCXlFZXm5y7fGqdIjDEmtiIZo3mpiCxxX8uB\n1cAfI1j3SGCtqq5X1TJgJnBhaAVVLQqZTaPyLQpxE3qmADB3+TbufKUgTtEYY0zsRHKmcB5wvvs6\nG+iqqn+OYLluwKaQ+ULCNDuJyM9EZB3OmcJtEaw36k4/ulO1sjcW27gIxpiWL5KksD/kVQy0FZGO\ngVcty4W7LaLamYCqTlXVfsD/AHeHXZHIRBHJF5H8HTt2RBDykbnsuO5M/3Gd/UYZY0yLE8ndR4uB\nHsAenAN9e2Cj+55S8/WFQne5gO7A5lq2MxP433BvqOqzwLPg9JIaQcxHrGdH663UGNP6RHKm8D5w\nvqpmqWomTnPSG6raR1Vru+C8EBggIn1EJAm4EueJ6CARGRAyey6wpn7hR0+it/qJzu6DZWzf3yJH\nIjXGGCCyM4XjVXVSYEZV54jIA3UtpKo+EbkFp/M8LzBdVZeLyBQgX1VnA7eIyBic/pX2ANc16FNE\nQbf2qdXKch/4EGjkcRaMMaYJiSQp7BSRu4F/4jQX/QhnJLY6qep7wHtVyu4Jmb498lBjK6GxhuY0\nxphmJJIj3wQgG3gTmAV0cstaPOtBwBjT2kTSId5u4HYAt7fUvdrcxvBsoPduO4U5S7fw1Edr4x2K\nMcbERI1nCiJyj4gc404ni8hHwFpgm3sdoMUb1KUtd559dLzDMMaYmKmt+egKnKeXwbkA7MFpOjoV\n+F2U4zLGGBMHtSWFspBmorHAS6paoaoriewCdYv1xAer665kjDHNUG1JoVREhohINnA68EHIe22i\nG1bT9tRHayt1r22MMS1FbUnhduA1YBXwB1X9FkBEzgG+ikFsTcajlw6rVlbSEkdnM8a0ejUmBVX9\nQlWPUdVMVX0gpPw9VW0Vt6QG/PD46kNYlpbbmYIxpuWxJ7QilJpYeUjOYksKxpgWyJJChDLTkyrN\nW/ORMaYlsqQQoRdvHM295x8eOG78Hz/l/9ZEvxtvY4yJpYiSgoicKCJXici1gVe0A2tqema24fqT\n+gTn/QrX/O3LOEZkjDGNL5LhOP8B/B44GTjefbXaEWh+f/nweIdgjDFRE8lDaHnA4NbS31Fdju/d\nId4hGGNM1ETSfLQM6BztQJqLXplppCUdvhNp0Xe74xiNMcY0rkiSQhawQkTmisjswCvagTVliQmH\nd9uNz+fHMRJjjGlckTQf3RftIJqbxJABePYcKsfvVzweG3zBGNP81XmmoKrzw71iEVxTdd0JvSrN\n9/31e+wrLo9TNMYY03giufuXmHTNAAAZx0lEQVRotIgsFJEDIlImIhUiUhSL4JqqSaf2q1a2fPO+\nOERijDGNK5JrCn/GGX5zDZAK3OiWtVreME1FFX67OcsY0/xF9PCaqq4FvO54Cs8Bp0U1qiZOwgze\n/Mbi7+MQiTHGNK5IksIhEUkCCkTkURH5OZAW5bianTe/+p5ZX1liMMY0b5EkhWvcercAB4EewKWR\nrFxExonIahFZKyKTw7x/p4isEJElIvIvEekVbj1N0V+vrf5Q9x0vF7Bp96E4RGOMMY0jkruPvgME\n6KKq96vqnW5zUq1ExAtMBcYDg4EJIjK4SrWvgDxVHYYzoM+j9f0A8XLW4KPClp/y6McxjsQYYxpP\nJHcfnQ8UAO+78zkRPrw2ElirqutVtQyYCVwYWkFVP1bVwFfrz4Hu9Qk+3lY/OC7eIRhjTKOKpPno\nPpwD/F4AVS0AekewXDdgU8h8oVtWkxuAOeHeEJGJIpIvIvk7djSd7qqTE7zcfFr121MLNu2NQzTG\nGHPkIkkKPlVtyE344R7xDXvfpoj8CKfjvcfCva+qz6pqnqrmZWdnNyCU6PmfcceQ16tyJ3kXTf2M\n95dtZe32A3GKyhhjGiaiDvFE5CrAKyIDRORPwIIIlivEuSgd0B3YXLWSiIwB7gIuUNXSCNbb5Fw1\nqme1skn/XMSYJ1r1g9/GmGYokqRwK3AsUAq8BBQBd0Sw3EJggIj0cW9pvRKodC1CREYAz+AkhO31\nCbwpuXhENz7+xWnxDsMYY45YnR3iuReC73JfEVNVn4jcAswFvMB0VV0uIlOAfFWdjdNclA686j4Q\ntlFVL6jnZ4g7EaFPlj26YYxp/mpMCnXdYRTJwVtV3wPeq1J2T8j0mAhibDae/lEuk/65uFLZ3/79\nLQM6pfODgU3rWogxxoQjNQ2oJiI7cO4eegn4gioXjuPVU2peXp7m5zftMQx6T363Wtlz1x/P6Ud3\nikM0xhgDIrJIVescSrm2awqdgV8DQ4A/AmcBO63r7LqNPbb6g23Lv7deVI0xTV+NScHt/O59Vb0O\nGA2sBT4RkVtjFl0z9acJuRx9VEalst9/8E2cojHGmMjVeveRiCSLyCXAP4GfAU8Bb8QisOYsKcHD\nbWcOiHcYxhhTb7VdaH4ep+loDnC/qi6LWVQtQJf2KdXKNu0+RI+ObeIQjTHGRKa2M4VrgIHA7cAC\nESlyX/tb+8hrkcjt2aFa2SmPfsxdby5l+/6SOERkjDF1q+2agkdVM9xX25BXhqq2jWWQzVVCmBHa\nXvhiI2c+btfpjTFNU0Qjr5mGefvWk7nnvMH8MK9y56/7S3yU+fws3LA7TpEZY0x4dT7RbBpuUJe2\nDOrSlkXf7eH1xd9XGsd54N1Oh7Bzbj+FQV3sxMsY0zTYmUIMHNerA+t+dw4v3jSq2nu7D5bFISJj\njAnPkkIM9e+UXq3s6mlfsO9QeRyiMcaY6iwpxFCnjBQmjz+mWvnwKR9wxuOf8LUNzmOMiTNLCjE2\n6dTqI7UBrN9xkCuf/TzG0RhjTGWWFJqQ4vIKauqg0BhjYsGSQhw8dtmwGt/r86v3eKvg+xhGY4wx\nh1lSiIPLjute6/u3zywI2/22McZEmyWFOHBHmauT329NScaY2LKk0ITtOVTGoTJfvMMwxrQilhTi\n5Mtfn8n8X54WnO/QJjE4fVwvpzO94x6cx+B75nLrS1/ZBWhjTExYUoiTTm1T6JWZxsUjutEpI5kv\n73KGqx7SrS2/u3hopbpvf72Z/6zfxYRnP+fxD1ZbgjDGRE2NYzQ3Vc1hjOaGCvwuRIRbX/qKt7/e\nHLbevDt/QPs2SQBkpSfHLD5jTPPVGGM0N0YQ40RktYisFZHJYd7/gYgsFhGfiFwWzViaAxEJXoR+\n6JKhNdYb88Sn5D04j7wH51Hm88cqPGNMKxC1pCAiXmAqMB4YDEwQkcFVqm0Efgy8GK04mqv05Mg6\nsB149xyO+c2cKEdjjGktonmmMBJYq6rrVbUMmAlcGFpBVTeo6hLAvu6GseHhc/nmwfF11isp99N7\n8rtM/XhtDKIyxrRk0UwK3YBNIfOFbpmph6QED1/fczY/OalPnXUfm7uaeSu2xSAqY0xLFc2kEO4J\nrQZd1RaRiSKSLyL5O3bsOMKwmp92bRK55/zBbHj4XB64aEitdW/8ez7rdhyIUWTGmJYmmkmhEOgR\nMt8dCH87TR1U9VlVzVPVvOzs7EYJrrm6ZnSvOuuc+fh8xjwxn1+/uZSNuw7FICpjTEsRzaSwEBgg\nIn1EJAm4Epgdxe21Gi9PHM0DFx7L6UcfTpCX5lbuT2nt9gO8+MVGfvDYx3y78yCvLyq05xuMMXWK\n6nMKInIO8CTgBaar6m9FZAqQr6qzReR44E2gA1ACbFXVY2tbZ0t+TqEh/veTdZT6KrjplL48+O5K\nXvpyY411e3RM5dyhXcMO9GOMadkifU7BHl5rYab933oefHdlrXUW/+YsNuw6yIge7SPunM8Y07xZ\nUmjFdh0o5f3lW7nrzWW11rtkRDd+dc4gsjPsqWhjWjpLCoZNuw+RmuTl3Kf+j21FpTXWW37/WN5Z\nspnkBC/bikr4rxqGDDXGNF+WFEwlm3YfYv43O7h7Vu1nD+A8NGeMaVmaRN9Hpuno0bENP4rgdlaA\nlVuKeHjOKnpPfpeCTXujHJkxpimxM4VWZtZX3/P8fzZw1zmD2F/q48F3VrBux8Fal/n8V2eiKF3a\npcYmSGNMo7PmIxOxSMeDtmYlY5qvSJNCZF1xmhbtL1fn0i41ka37Snjxy40s+m5P2HrjnvyUVVv3\nA3D5cd1JT0ngjjMH0i5k1DhjTPNmScFwztAuwem9xeUs+m4PL9w4in3F5fz0hcXB9wIJAeDVRYUA\nPPfZBi7J7cYdZw6kR8dU/Apejz37YExzZc1HphK/X1m8cQ95vTsCzjMPf5j3Df/8vOYnpQPOOKYT\nH63azsyJoxndNzPaoRpj6sGuKZhGt+dgGQfLfJz8yMd11v1hXnceuXQYhXuKyUpPJjXJG4MIjTE1\nsaRgouarjXt4fsEGTh6QzTtLNvPJ6si7M7/tjP78aHQvOrVNiWKExpiqLCmYmJq7fCu5PTtw/G/n\nRbzMb84bzPUn9sZj1yCMiTpLCiYuynx+RMCvytF3vx/xcpNO7UdOj3bsL/FRXF7BtSf0jl6QxrRC\nlhRMk6CqwZ5YN+46xA8eq/t6BEBqonMN4tVJJ1Be4WdEzw5Ri9GY1sCSgmmSdh0o5fu9xfTqmMa8\nldvYc6iMj1ZtZ8G6XREt/8O87lwzujc9O7ax5yOMqQdLCqZZUXVuhS0p9/P8gg1s2lPMyi1FES17\nUU5XrhrVi54d23BU22QbI8KYMCwpmBZhztIt/HvtTl74ou7nJKrql53GLWf054Lh3fh8/S66tEuh\nb3Z6FKI0pumzpGBalG93HuTpT9Zx3wXHkpLo4e0lW7jtpa+OaJ3PXHMca7cfoFdmG84Z0oVyvx9B\n8AgkeK0DYdOyWFIwrcr+knIOlPp4Nb+Q95dtZUWETU91ue6EXpzQL5OeHdPo3ymdpARLFqZ5sqRg\njGt/STk79peycst+9hwqY9XWooi67ajLucO6sG1fCcO6t+f0Y7JJ8Hg4vncHO8swTZIlBWMitPtg\nGamJXrbsK6bCr8xZtpWvN+3lX6u2N8r6+2alsX7nQURA1ekj6od53encLpX+ndLZc7CM7IxkUhKt\nKxATPZYUjGlkm3YfYu+hcnp0TOV/Xl9CWnICx/fuyO6DZTw2d3WjbadtSgJFJT4AOmUk06ltMunJ\nCfTqmEapr4LeWWkkeITTj+lEv+x09hxyklr7NkmNFoNpeZpEUhCRccAfAS8wTVUfrvJ+MvB34Dhg\nF3CFqm6obZ2WFExTFvh/Kir2kZzowa/Kqq376d4hlRWbi/jtuyu5aEQ3EjzCQ3NWNfr2EzyCz3/4\nfzorPYk+WWksKdxHmyQvI3p2oG9WGpv2HGL9joPObbztUthf4qOouJxTBmQxuGtb1mw7QKmvgqPa\nptCzYxuSE7ykJnlpk+QlMy0Jdbdlt/82H3FPCiLiBb4BzgIKgYXABFVdEVLnp8AwVZ0kIlcCF6vq\nFbWt15KCaalCn/6u8Cv7S8pRhXK/n9Vb91O4p5i5y7cytFs7+ndKR0RYvnkfW/eVUFruJyXRw7ai\nUvYVl7NqaxF+dZqu0lMSWFK4L7idJK+Hsgp/o8SclOChzHd4XZ3bppDgFcp8frLSk0lJ9LC/xEen\ntsl4REj0ekhJ9LBpdzE9M9uQkZxAWYUfVWiXmkhyogcU0pMT8HiEBI/grfqS6mUJHsEjQoLX/enx\n4PFAgseD1wNejye4nMcDB0srSE30oigeEdKSEvD5/SQnekn0CiiICH5VRMArzno9HiE5wdl/KQle\nRMBXoSR6nXU35STZFEZeGwmsVdX1bkAzgQuBFSF1LgTuc6dfA/4sIqLNrU3LmEYQekDxeqRSc1Cn\nDKdX2Qkje1Za5oLhXSNef3mFH68IIlBW4aeo2Mf2/SX4/VBUUo7XIxwq81Fc5qesooJ5K7eTlZZE\np7YpbNx1iFJfBcs3FzG6byaJXg8izjq//HY3ew6VMbRbe9KTvfj8yne7DiHifKb0lAT2l/jcfrGE\nfYfK2HmwjA27DpKc4GFfcTkJHg8JXuFQWQWqir+ZHgFC+3YM3HAQ2OfO+850gkeCZ1uq4PEIAs4+\nc2+LFrduaNnPzxrIhTndovoZopkUugGbQuYLgVE11VFVn4jsAzKBnaGVRGQiMBGgZ8+eGGPqLzHk\nrqjkBC/ZGV6yM5JrrH/xiO6xCKuSwPdBn1+p8Ct+VXx+xe+v/LMi8NKQafflCyxXcXj5Cr+fCj9U\n+P34/MrWfSV0a5+KxyP4/cqBUh8VfuesoTTkLMoj4FcnrsD6S31+Er1CcZnT+WOi14Ovwk95hR+/\nEryhoLzCD+IMXBX4mqsQXI+TVNXdhlNHFRRn2h8yraookJVe8++rsUQzKYQ7j6qa/yOpg6o+CzwL\nTvPRkYdmjGmKAmdLiV7BbsaKj2jeUF0I9AiZ7w5srqmOiCQA7YDdUYzJGGNMLaKZFBYCA0Skj4gk\nAVcCs6vUmQ1c505fBnxk1xOMMSZ+otZ85F4juAWYi3NL6nRVXS4iU4B8VZ0N/A34h4isxTlDuDJa\n8RhjjKlbNK8poKrvAe9VKbsnZLoEuDyaMRhjjImcddJijDEmyJKCMcaYIEsKxhhjgiwpGGOMCWp2\nvaSKyA7guwYunkWVp6WbCIurfiyu+mmqcUHTja0lxtVLVbPrqtTsksKREJH8SDqEijWLq34srvpp\nqnFB042tNcdlzUfGGGOCLCkYY4wJam1J4dl4B1ADi6t+LK76aapxQdONrdXG1aquKRhjjKldaztT\nMMYYU4tWkxREZJyIrBaRtSIyOYbb7SEiH4vIShFZLiK3u+X3icj3IlLgvs4JWeZXbpyrRWRslOPb\nICJL3Rjy3bKOIvKhiKxxf3Zwy0VEnnJjWyIiuVGK6eiQ/VIgIkUickc89pmITBeR7SKyLKSs3vtH\nRK5z668RkevCbasR4npMRFa5235TRNq75b1FpDhkvz0dssxx7u9/rRv7EY0nWUNc9f69Nfb/aw1x\nvRwS0wYRKXDLY7m/ajo+xO9vTFVb/Aunl9Z1QF8gCfgaGByjbXcBct3pDJxxqwfjDEP6izD1B7vx\nJQN93Li9UYxvA5BVpexRYLI7PRl4xJ0+B5iDMzjSaOCLGP3utgK94rHPgB8AucCyhu4foCOw3v3Z\nwZ3uEIW4zgYS3OlHQuLqHVqvynq+BE5wY54DjI9CXPX6vUXj/zVcXFXefxy4Jw77q6bjQ9z+xlrL\nmUJwvGhVLQMC40VHnapuUdXF7vR+YCXOMKQ1uRCYqaqlqvotsBYn/li6EHjenX4euCik/O/q+Bxo\nLyJdohzLmcA6Va3tgcWo7TNV/ZTqAz/Vd/+MBT5U1d2qugf4EBjX2HGp6geq6nNnP8cZ2KpGbmxt\nVfU/6hxZ/h7yWRotrlrU9Htr9P/X2uJyv+3/EHiptnVEaX/VdHyI299Ya0kK4caLju7o12GISG9g\nBPCFW3SLewo4PXB6SOxjVeADEVkkzljYAEep6hZw/miBTnGKDZwxNkL/WZvCPqvv/onHfvsJzjfK\ngD4i8pWIzBeRU9yybm4ssYirPr+3WO+vU4BtqrompCzm+6vK8SFuf2OtJSlENBZ0VAMQSQdeB+5Q\n1SLgf4F+QA6wBef0FWIf60mqmguMB34mIj+opW5MYxNnxL4LgFfdoqayz2pSUxyx3m93AT7gBbdo\nC9BTVUcAdwIvikjbGMZV399brH+fE6j8xSPm+yvM8aHGqjXE0GixtZakEMl40VEjIok4v/AXVPUN\nAFXdpqoVquoH/srh5o6Yxqqqm92f24E33Ti2BZqF3J/b4xEbTqJarKrb3BibxD6j/vsnZvG5FxjP\nA652mzhwm2d2udOLcNrrB7pxhTYxRSWuBvzeYrm/EoBLgJdD4o3p/gp3fCCOf2OtJSlEMl50VLjt\nlX8DVqrqEyHloW3xFwOBuyJmA1eKSLKI9AEG4FzcikZsaSKSEZjGuVC5jMpjZ18HvBUS27XuHRCj\ngX2BU9woqfQNrinss5Dt1Wf/zAXOFpEObtPJ2W5ZoxKRccD/ABeo6qGQ8mwR8brTfXH2z3o3tv0i\nMtr9O7025LM0Zlz1/b3F8v91DLBKVYPNQrHcXzUdH4jn39iRXDlvTi+cq/bf4GT9u2K43ZNxTuOW\nAAXu6xzgH8BSt3w20CVkmbvcOFdzhHc31BFbX5w7O74Glgf2C5AJ/AtY4/7s6JYLMNWNbSmQF8XY\n2gC7gHYhZTHfZzhJaQtQjvNt7IaG7B+cNv617uv6KMW1FqddOfB39rRb91L39/s1sBg4P2Q9eTgH\n6XXAn3EfaG3kuOr9e2vs/9dwcbnlM4BJVerGcn/VdHyI29+YPdFsjDEmqLU0HxljjImAJQVjjDFB\nlhSMMcYEWVIwxhgTZEnBGGNMkCUFEzERURF5PGT+FyJyXyOte4aIXNYY66pjO5eL0yPlxyFlQ+Vw\nj5i7ReRbd3petONxt3+xiPyyHvUTRKRCKvckG/HyjUVEHhSRO8KU9xe3x1HT/CTEOwDTrJQCl4jI\nQ6q6M97BBIiIV1UrIqx+A/BTVQ0mBVVditMFAyIyA3hHVV8Ls50EPdzhXKNR1TcbsNh+Vc1p7FiM\nsTMFUx8+nOEAf171jarf9EXkgPvzNLdTsVdE5BsReVhErhaRL8Xpl75fyGrGiMj/ufXOc5f3ijNO\nwEJxOlT7r5D1fiwiL+I8xFM1ngnu+peJyCNu2T04Dws9LSKPRfKBRWSMiMwTkZnAV27ZdW78BSLy\nFxHxuOXjReQ/IrJYnL7609zyx0RkhRv/I2G2caOIPOlO/1NE/igiC0RkvYhcHEmcIesqFGf8gq/c\n7Q10y88Qka/dmBeHxDbZ/SxL3P0T+Ka/TJzO65aLyN9FZKwb0zcikheyyRHu72GNiPwkTDwJIvJE\nyDZurM/nMbFnZwqmvqYCS0Tk0XosMxwYhNN18XpgmqqOFGdAkVuBQBNEb+BUnM7TPhaR/jhdCexT\n1eNFJBn4TEQ+cOuPBIao0+1ykIh0xRlP4DhgD04vsBep6hQROQOnb//8esQ/Gqc//40iMgSnq4YT\nVdUnIs/idNUwD6ff+zNV9ZA4ndLdLiJ/w3lC9VhVVXEHvqlDJ+AkYCjwCk6fVFVlVGmieTDk7Gab\nqo4QkdtwOnSbBPwSmKiqX4jT+VqJOIPd9ARG4Twp+56InIjTz87RON1Jr8J5qrdUVU8UkUvdzxn4\nAjAUOBFoCywWkXerxDkR2O7+vpOBz0XkA1XdGMF+MHFgScHUi6oWicjfgduA4ggXW6huH0kisg4I\nHNSXAqeH1HtFnU7T1ojIeuAYnD5choWchbTD6YumDPiyakJwHQ98oqo73G2+gDPIyqwI463qPyEH\nsTHu+vPFGXQrFadriUM4g6MscMuTgH/jJEI/8Ff3gPlOBNubpU5XA0tEpKbuj2trPgp0qrYIJyEB\nfAY86Z5Zva6qB0TkbJxOB79y66TjdPy2HWc8gxUAIrICCFxfWQr8qkqsJThJ5lOcfbMq5P2zgUEi\ncqU7H/j9WVJooiwpmIZ4Eufb43MhZT7c5khxjopJIe+Vhkz7Q+b9VP4brNrnSqBL4FtVtVLnXiJy\nGnCwhviOaIjEMEK3I8B0Vf1NlXguBt5X1WuqBeM0t5yF07HbzTgHytqE7q+GfJbA8hW4+1dVHxSR\n2cC5wEJ3/wnOGcbfqsTbnyP7nVVaHc41nH814HOYOLBrCqbeVHU3TrPGDSHFG3Caa8AZHSqxAau+\nXEQ87nWGvjidpM0Fbhane2FEZGCgPbwWXwCnikiWOL1dTgDmNyCecOYBPxSRLDeeTBHpCSxwt9nX\nLU8TkQHi9ELbVlXfwbkWM6KR4qgXEemnqktU9SGcM4OjcfbtDSHXF7oHPlc9XCROL6dZOIPVVG2W\nmwv8VJwuqgPjb6ce0YcxUWVnCqahHgduCZn/K/CWiHyJ06tjTd/ia7Ma5+B9FE7PlSUiMg3nWsNi\n9wxkB3UMgaiqW0TkV8DHuG3lqtooXUKr6lIRuR+Y515gLndjXSgiNwAvi9PdM8CvcZrY3nDb0z04\nbfyNoeo1hXdV9a5a6v9CnBHE/Dg9cn6gqmUicgxOOz/AfuCqesaxEGeEtx7Avaq6zU2EAc/gXLco\ncLexnRgNhWsaxnpJNcYYE2TNR8YYY4IsKRhjjAmypGCMMSbIkoIxxpggSwrGGGOCLCkYY4wJsqRg\njDEmyJKCMcaYoP8POUST+rKRFScAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f07711a7080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0772a54908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import urllib.request, urllib.error, urllib.parse\n",
    "import numpy\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn import ensemble\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import pylab as plot\n",
    "\n",
    "# Read wine quality data from UCI website\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "names = []\n",
    "firstLine = True\n",
    "for line in data:\n",
    "    if firstLine:\n",
    "        names = line.decode().strip().split(\";\")\n",
    "        firstLine = False\n",
    "    else:\n",
    "        #split on semi-colon\n",
    "        row = line.decode().strip().split(\";\")\n",
    "        #put labels in separate array\n",
    "        labels.append(float(row[-1]))\n",
    "        #remove label from row\n",
    "        row.pop()\n",
    "        #convert row to floats\n",
    "        floatRow = [float(num) for num in row]\n",
    "        xList.append(floatRow)\n",
    "\n",
    "nrows = len(xList)\n",
    "ncols = len(xList[0])\n",
    "\n",
    "X = numpy.array(xList)\n",
    "y = numpy.array(labels)\n",
    "wineNames = numpy.array(names)\n",
    "\n",
    "#take fixed holdout set 30% of data rows\n",
    "xTrain, xTest, yTrain, yTest = train_test_split(X, y, test_size=0.30, random_state=531)\n",
    "\n",
    "# Train gradient boosting model to minimize mean squared error\n",
    "nEst = 2000\n",
    "depth = 7\n",
    "learnRate = 0.01\n",
    "subSamp = 0.5\n",
    "wineGBMModel = ensemble.GradientBoostingRegressor(n_estimators=nEst,\n",
    "                                                  max_depth=depth,\n",
    "                                                  learning_rate=learnRate,\n",
    "                                                  subsample = subSamp,\n",
    "                                                  loss='ls')\n",
    "\n",
    "wineGBMModel.fit(xTrain, yTrain)\n",
    "\n",
    "# compute mse on test set\n",
    "msError = []\n",
    "predictions = wineGBMModel.staged_predict(xTest)\n",
    "for p in predictions:\n",
    "    msError.append(mean_squared_error(yTest, p))\n",
    "\n",
    "print(\"MSE\" )\n",
    "print(min(msError))\n",
    "print(msError.index(min(msError)))\n",
    "\n",
    "#plot training and test errors vs number of trees in ensemble\n",
    "plot.figure()\n",
    "plot.plot(range(1, nEst + 1), wineGBMModel.train_score_, label='Training Set MSE')\n",
    "plot.plot(range(1, nEst + 1), msError, label='Test Set MSE')\n",
    "plot.legend(loc='upper right')\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.show()\n",
    "\n",
    "# Plot feature importance\n",
    "featureImportance = wineGBMModel.feature_importances_\n",
    "\n",
    "# normalize by max importance\n",
    "featureImportance = featureImportance / featureImportance.max()\n",
    "idxSorted = numpy.argsort(featureImportance)\n",
    "barPos = numpy.arange(idxSorted.shape[0]) + .5\n",
    "plot.barh(barPos, featureImportance[idxSorted], align='center')\n",
    "plot.yticks(barPos, wineNames[idxSorted])\n",
    "plot.xlabel('Variable Importance')\n",
    "plot.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)\n",
    "plot.show()\n",
    "\n",
    "\n",
    "# Printed Output:\n",
    "# for:\n",
    "#nEst = 2000\n",
    "#depth = 7\n",
    "#learnRate = 0.01\n",
    "#subSamp = 0.5\n",
    "#\n",
    "# MSE\n",
    "# 0.313361215728\n",
    "# 840"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### wineRF.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE\n",
      "0.3184462723865057\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nDvn/Z1Jn0OWMa0UAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0770ce44e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0772ac5128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import urllib.request, urllib.error, urllib.parse\n",
    "import numpy\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn import ensemble\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import pylab as plot\n",
    "\n",
    "\n",
    "# Read wine quality data from UCI website\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "names = []\n",
    "firstLine = True\n",
    "for line in data:\n",
    "    if firstLine:\n",
    "        names = line.decode().strip().split(\";\")\n",
    "        firstLine = False\n",
    "    else:\n",
    "        #split on semi-colon\n",
    "        row = line.decode().strip().split(\";\")\n",
    "        #put labels in separate array\n",
    "        labels.append(float(row[-1]))\n",
    "        #remove label from row\n",
    "        row.pop()\n",
    "        #convert row to floats\n",
    "        floatRow = [float(num) for num in row]\n",
    "        xList.append(floatRow)\n",
    "\n",
    "nrows = len(xList)\n",
    "ncols = len(xList[0])\n",
    "\n",
    "X = numpy.array(xList)\n",
    "y = numpy.array(labels)\n",
    "wineNames = numpy.array(names)\n",
    "\n",
    "#take fixed holdout set 30% of data rows\n",
    "xTrain, xTest, yTrain, yTest = train_test_split(X, y, test_size=0.30, random_state=531)\n",
    "\n",
    "#train random forest at a range of ensemble sizes in order to see how the mse changes\n",
    "mseOos = []\n",
    "nTreeList = range(50, 500, 10)\n",
    "for iTrees in nTreeList:\n",
    "    depth = None\n",
    "    maxFeat  = 4 #try tweaking\n",
    "    wineRFModel = ensemble.RandomForestRegressor(n_estimators=iTrees, max_depth=depth, max_features=maxFeat,\n",
    "                                                 oob_score=False, random_state=531)\n",
    "\n",
    "    wineRFModel.fit(xTrain,yTrain)\n",
    "\n",
    "    #Accumulate mse on test set\n",
    "    prediction = wineRFModel.predict(xTest)\n",
    "    mseOos.append(mean_squared_error(yTest, prediction))\n",
    "\n",
    "\n",
    "print(\"MSE\" )\n",
    "print(mseOos[-1])\n",
    "\n",
    "\n",
    "#plot training and test errors vs number of trees in ensemble\n",
    "plot.plot(nTreeList, mseOos)\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "#plot.ylim([0.0, 1.1*max(mseOob)])\n",
    "plot.show()\n",
    "\n",
    "# Plot feature importance\n",
    "featureImportance = wineRFModel.feature_importances_\n",
    "\n",
    "# normalize by max importance\n",
    "featureImportance = featureImportance / featureImportance.max()\n",
    "sorted_idx = numpy.argsort(featureImportance)\n",
    "barPos = numpy.arange(sorted_idx.shape[0]) + .5\n",
    "plot.barh(barPos, featureImportance[sorted_idx], align='center')\n",
    "plot.yticks(barPos, wineNames[sorted_idx])\n",
    "plot.xlabel('Variable Importance')\n",
    "plot.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)\n",
    "plot.show()\n",
    "\n",
    "#printed output\n",
    "#MSE\n",
    "#0.314125711509"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
